我写了一个包含依赖关系依赖psutil的包(my-package
取决于third-party-package
,这取决于psutil
)。
由于它应该在没有任何连接且没有gcc
的服务器上运行,因此我使用psutil
python platform wheel和pip 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...
我错过了什么?任何线索?
答案 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 script和Linux/Mac或Windows包装来执行一致安装的销售点包。关键是供应商的一切,这可能是你失败的另一个原因。
答案 1 :(得分:0)
从您的回答中,您似乎已经开始使用额外的步骤了。
进行离线安装时,您需要告诉它在哪里可以找到您要明确安装的所有软件包,而不仅仅是顶层。
我个人一直明确表示您正在查看该文件,并且与任何其他pip安装一样,您可以在同一行上为上下文指定多个安装。
$ pip install --no-index --find-links file:/tmp/python_packages/ --use-wheel psutil my-package-1.4.zip