pip install无法安装依赖项

时间:2018-04-18 13:23:13

标签: python pip setup.py python-packaging

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 tablespip install progress,一切都会按预期运行。

那么我怎么能保证如果有人下载我的软件包,所有缺少的依赖项都随之安装?

相关红利问题

我可以在我的包中包含一个wheel文件(可能通过MANIFEST.in)并在模块不可用时将其作为依赖项安装吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

我想我自己找到了问题的答案。

testPyPI安装软件包时,也会从那里安装依赖项。看来,虽然有很多可用的软件包,但pytablesprogress显然都缺失了。这导致安装失败。

当然,使用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

会产生与我的问题中描述的错误相同的错误。