【发布时间】: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-api3 为mypackage 安装作为依赖项。
在我看来,我提供给 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