pip install 安装依赖失败

pip install fails to install dependencies

TL;DR 即使我在 setup.py 中指定了 install_requires 的依赖项,通过 pip 安装失败,因为一些依赖项找不到。


我开发了一个包,打算通过 PyPi 分发。我已经创建了一个内置的分发轮并将其上传到 testPyPI 以查看上传是否一切正常,以及是否可以从用户角度安装软件包。

但是,当我尝试 pip 在 vanilla python 2.7 环境中安装软件包时,安装过程在安装依赖项时失败。

我的包依赖于这些包(我相应地添加到 setup.py 文件):

...

install_requires=['numpy','gdal','h5py','beautifulsoup4','requests','tables','progress'],

...

所以当我 运行 pip install 时,一切看起来都很正常,直到我收到这个错误:

Could not find a version that satisfies the requirement progress (from #NAME#) (from versions: ) No matching distribution found for progress (from #NAME#)

当我删除进度依赖项时(我可以没有它),同样的事情发生在 pytables:

Could not find a version that satisfies the requirement tables (from #NAME#) (from versions: ) No matching distribution found for tables (from #NAME#)

如果我事先手动 运行 pip install tablespip install progress,一切都会按预期进行。

那么我如何确保如果有人下载了我的软件包,所有缺少的依赖项都已安装?

相关加分题:

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

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

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

当然,使用 pip install 手动安装会从 "normal" PyPi 获取软件包,这当然有效。这显然增加了我的困惑。

下面是从 testPyPi 安装软件包时 pip install 的输出:

  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

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