TL; DR 即使我在install_requires
中指定了setup.py
的依赖项,但pip
的安装失败,因为无法找到某些依赖项
我开发了一个我打算通过PyPi
分发的软件包。我已经创建了一个内置的分发轮并将其上传到testPyPI
以查看是否所有内容都与上传有关,以及是否可以从用户角度安装软件包。
但是,当我尝试pip
在vanilla python 2.7环境中安装软件包时,安装过程在安装依赖项时失败。
我的包依赖于这些包(我相应地添加到setup.py
文件中):
...
install_requires=['numpy','gdal','h5py','beautifulsoup4','requests','tables','progress'],
...
因此,当我运行pip install时,一切看起来都很正常,直到我收到此错误:
无法找到满足要求进度的版本(来自#NAME#)(来自版本:) 找不到与进度相匹配的分布(来自#NAME#)
当我删除进度依赖项(我可以没有它)时,pytables
也会发生同样的事情:
无法找到满足需求表的版本(来自#NAME#)(来自版本:) 找不到表的匹配分布(来自#NAME#)
如果我事先手动运行pip install tables
和pip install progress
,一切都会按预期运行。
那么我怎么能保证如果有人下载我的软件包,所有缺少的依赖项都随之安装?
相关红利问题:
我可以在我的包中包含一个wheel文件(可能通过MANIFEST.in
)并在模块不可用时将其作为依赖项安装吗?如果是这样,怎么样?
答案 0 :(得分:1)
我想我自己找到了问题的答案。
从testPyPI
安装软件包时,也会从那里安装依赖项。看来,虽然有很多可用的软件包,但pytables
和progress
显然都缺失了。这导致安装失败。
当然,使用pip install
手动安装会从“普通”PyPi
获取包,这当然有效。这显然增加了我的困惑。
以下是pip install
安装软件包时testPyPi
的输出结果:
Downloading https://test-files.pythonhosted.org/packages/4f/96/b3329750a04fcfc316f15f658daf6d81acc3ac61e3db390abe8954574c18/nump
y-1.9.3.tar.gz (4.0MB)
直接安装车轮时,它看起来略有不同:
Downloading https://files.pythonhosted.org/packages/2e/91/504e434d3b95d943caab926f33dee5691768fbb622bc290a0fa6df77e1d8/numpy-1.1
4.2-cp27-none-win32.whl (9.8MB)
此外,正在运行
pip install --index-url https://test.pypi.org/simple/ tables
会产生与我的问题中描述的错误相同的错误。