通过pip

时间:2016-05-18 22:54:54

标签: python python-2.7 pip python-wheel psutil

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

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

$ 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...

我错过了什么?任何线索?

2 个答案:

答案 0 :(得分:1)

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

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

当要求直接安装车轮时,会进行最少的检查,而pip假设你真的想安装它。

如果在您的情况下间接安装车轮作为dep的dep,则在此上下文中可能存在不兼容的标签。

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

含糊不清,如果这可以提供帮助,我会使用this scriptLinux/MacWindows包装来执行一致安装的销售点包。关键是供应商的一切,这可能是你失败的另一个原因。

答案 1 :(得分:0)

从您的回答中,您似乎已经开始使用额外的步骤了。

进行离线安装时,您需要告诉它在哪里可以找到您要明确安装的所有软件包,而不仅仅是顶层。

我个人一直明确表示您正在查看该文件,并且与任何其他pip安装一样,您可以在同一行上为上下文指定多个安装。

$ pip install --no-index --find-links file:/tmp/python_packages/ --use-wheel psutil my-package-1.4.zip