python - 通过 pip 安装 psutil (wheel) 作为依赖项时出现问题

标签 python python-2.7 pip python-wheel psutil

我写了一个依赖于psutil的包(my-package 依赖于 third-party-package,后者依赖于 psutil)。
由于它应该在没有任何连接且没有 gcc 的服务器上运行,因此我使用 psutil python platform wheel 在本地准备了部署。和 pip install my-package --download,然后将所有内容发送到服务器上。

现在服务器上一切就绪,但由于某种原因,当我运行安装时,pip 拒绝安装 psutil。请注意,服务器是运行 pip 7.1.0 的 red hat 7.2,virtualenv 1.10.1 和 python 2.7.5(我无法更改任何版本)。

$ pip install /tmp/python_packages/my-package-1.4.zip --no-index 
  --find-links /tmp/python_packages/ --use-wheel
Ignoring indexes: https://pypi.python.org/simple/

# blablabla, everything goes fine, then

Downloading/unpacking psutil (from third-party-package>=0.9->my-package==1.4)
  Could not find any downloads that satisfy the requirement psutil 
  (from third-party-package>=0.9->my-package==1.4)
Cleaning up...
No distributions at all found for psutil (from third-party-package>=0.9->my-package==1.4)
Storing complete log in /home/anto/.pip/pip.log

这是 pip.log 的内容:

Downloading/unpacking psutil (from third-party-package>=0.9->my-package==1.4)

  URLs to search for versions for psutil (from third-party-package>=0.9->my-package==1.4):
  # bla
  Skipping file:///tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
    because it is not compatible with this Python
  # bla
  Could not find any downloads that satisfy the requirement psutil (from third-
   party-package>=0.9->my-package==1.4)

Cleaning up...

所以“与这个 Python 不兼容”,好吧。但这是真正奇怪的部分:如果我只安装 psutil,然后安装其余部分,一切正常。

$ pip install /tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
Unpacking /tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl
Installing collected packages: psutil
Successfully installed psutil
Cleaning up...
$ pip freeze -l
psutil==4.2.0
$ pip install /tmp/python_packages/my-package-1.4.zip --no-index 
  --find-links /tmp/python_packages/ --use-wheel

# blablabla

Successfully installed my-package third-party-package
Cleaning up...

我错过了什么?有什么线索吗?

最佳答案

您面临的关键问题是恕我直言:

Skipping file:///tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
because it is not compatible with this Python

最近在 pip 中引入了一个新功能来支持“许多 linux”轮子(参见 PEP)

当要求直接安装 wheel 时,会进行最少的检查,并且 pip 会假定您真的想要安装它。

在您的案例中,当轮子作为一个 dep 的 dep 间接安装时,在此上下文中可能存在不兼容的标签。

我会确保使用最新版本的 pip、setuptools 和 virtualenv 来移除事件部件,这可能会解决您的问题。

隐约相关,如果这有帮助,我使用 this scriptLinux/MacWindows包装器以一致地安装 vendored pip 包。关键是要出售所有东西,这可能是您失败的另一个原因。

关于python - 通过 pip 安装 psutil (wheel) 作为依赖项时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37311372/

相关文章:

python 如何将scrapy更新到0.22

python - 避免在 Python Flask 和大多数其他语言中使用魔数(Magic Number)

python - pip install mysql-connector==2.1.3 失败

python - 安装没有root但使用系统python的pip

python - 如何从两个图像重建场景的3D

python - 如何对 pandas 数据框进行非规范化

python - 在python中调用数据库时如何判断高度是否重复 第一个打印具有较小权重的行?

python - 尝试在 Python 3.4.3 上通过 pip 安装 PyGame 时出现 HTTP 错误 400

Python/从字符串中删除特殊字符

python - 为什么在复制 tf.dataset 时使用steps_per_epoch?