【问题标题】:setup.py dependency_links not searched for install_requiressetup.py dependency_links 未搜索 install_requires
【发布时间】:2018-11-03 01:13:55
【问题描述】:

这个问题已经在网站上被问过好几次了,但答案似乎经常是install_requires arg 的遗漏。
这里不是这样。

我正在尝试构建一个可以通过 pip 安装的轮子,该方式还可以在 PyPI 上安装不是的必需包。

我的setup.py 包括:

setup(
    install_requires= ['shotgun-api3']
    dependency_links = [
        "git+https://github.com/shotgunsoftware/python-api.git@v3.0.36#egg=shotgun_api3"
    ],
    # ...
)

然后我从命令行运行python setup.py sdist bdist_wheel 以生成/dist/mypackage-0.1.0-py2-none-any.whl

我没有将我的包上传到索引,而是尝试从文件系统安装我的包;所以在一个干净的virtualenv中,我然后运行: pip -v install mypackage --no-index --find-links file:///F:/RyDev/myproject/dist --process-dependency-links.

我得到:

DistributionNotFound: No matching distribution found for shotgun-api3 (from mypackage)

因为我使用了详细标志,所以我看到了:

Collecting shotgun-api3 (from mypackage)
  0 location(s) to search for versions of shotgun-api3:
  Skipping link file:///F:/RyDev/mypackage/dist/mypackage-4.0.0-py2-none-any.whl; wrong project name (not shotgun-api3)
  Skipping link file:///F:/RyDev/mypackage/dist/mypackage-4.0.0.tar.gz; wrong project name (not shotgun-api3)

这可能值得注意:

  • 如果我从 setup.py 中删除 install_requires 参数,mypackage 将 pip install 没有错误...只是没有依赖关系。
  • 我可以运行pip install git+https://github.com/shotgunsoftware/python-api.git@v3.0.36#egg=shotgun_api3 并成功安装shotgun-api3 包。

...但是对于我的生活,我似乎无法让shotgun-api3mypackage 安装作为依赖项

在我看来,我提供给 dependency_links 的 (git) URL 没有包含在位置列表中,所以我想知道我是否'我错过了什么?

环境:

  • Python 2.7.13(无法升级)
  • Windows 7(无法切换操作系统)
  • 点 10.0.1
  • 设置工具 39.2.0
  • virtualenv 16.0.0
  • 车轮 0.31.1

【问题讨论】:

  • 如果我没记错的话,pip 期望 install_requires 中的包名称与 dependency_links 中的鸡蛋名称和链接匹配,所以它必须像 install_requires=['python-api'] 和 dep 链接 @ 987654340@。它仍然会安装名为shotgun-api3 的包,因为真实名称将取自安装脚本。
  • 您对名称匹配的看法是正确的,但看起来shotgun_api3 确实是名称。我克隆了源代码并在本地构建了 egg,它生成了shotgun_api3-3.0.36-py2.7.egg,所以我认为它一定是别的东西?
  • ...再次,详细的输出似乎表明它不是在 URL 中找不到包,而是它甚至根本没有在 URL 中查找。
  • 您找到解决方案了吗?我现在也有同样的问题:stackoverflow.com/questions/52735269/…

标签: python pip setuptools


【解决方案1】:

至于你的 setup.py:

pip 19.0 and later 中,dependency_links 被忽略。使用 PEP 508 语法指定 pip 使用的 URL:

setup(
    install_requires= ['shotgun-api3 @ git+https://github.com/shotgunsoftware/python-api.git@v3.0.36#egg=shotgun_api3']
    dependency_links = [
        "git+https://github.com/shotgunsoftware/python-api.git@v3.0.36#egg=shotgun_api3"
    ],
    # ...
)

我已将您的 dependency_links 留在其中,因为 pip 中的嵌套依赖项使用了 setuptools,正如今天在 another StackOverflow question 的 cmets 中所讨论的那样。

关于安装:

由于我没有您的本地软件包,因此无法检查此答案是否解决了您的问题。不过,请务必在测试时删除 --process-dependency-links 部分,因为最新的 pip 也不再支持该部分。

或者,要安装本地包,请尝试pip install -e .,而不是手动编译和指定所有内容。

【讨论】:

    猜你喜欢
    • 2012-09-13
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2020-06-10
    • 2013-01-02
    • 2015-08-21
    • 2012-04-06
    相关资源
    最近更新 更多