我正在尝试在Centos 7机器上安装ruamel.yaml python库,我没有连接互联网。我试过这个:
使用本地存储库安装了libyaml-devel,python-devel,python-pip
已下载ruamel.yaml-0.13.14.tar&来自pypi的ruamel.ordereddict-0.4.6.tar(依赖)。
现在我可以使用pip install安装ruamel.ordereddict了。 但当我尝试以相同的方式安装ruamel.yaml时,我得到以下异常:
[root@limulus ruamel.yaml-0.13.14]# pip install .
Processing /tmp/python/ruamel.yaml-0.13.14
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/setuptools/__init__.py", line 2, in <module>
from setuptools.extension import Extension, Library
File "/usr/lib/python2.7/site-packages/setuptools/extension.py", line 5, in <module>
from setuptools.dist import _get_unpatched
File "/usr/lib/python2.7/site-packages/setuptools/dist.py", line 7, in <module>
from setuptools.command.install import install
File "/usr/lib/python2.7/site-packages/setuptools/command/__init__.py", line 8, in <module>
from setuptools.command import install_scripts
File "/usr/lib/python2.7/site-packages/setuptools/command/install_scripts.py", line 3, in <module>
from pkg_resources import Distribution, PathMetadata, ensure_directory
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 74, in <module>
import parser
File "parser.py", line 77, in <module>
from ruamel.yaml.error import MarkedYAMLError # type: ignore
File "/usr/lib64/python2.7/site-packages/ruamel/__init__.py", line 5, in <module>
__import__('pkg_resources').declare_namespace(__name__)
AttributeError: 'module' object has no attribute 'declare_namespace'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-oOWX1x-build/
在离线模式下安装python库的正确方法是什么?
答案 0 :(得分:1)
看起来您一直在扩展tar文件,这是不必要的,但我不确定这是否是您收到此错误的原因,您可能也错过了typing
依赖项。
您不应该使用已安装的系统pip
,它几乎已过时,并且在某些系统上实际上会导致问题,因为旧版本中存在未修复的错误。
你不应该做的是在Python virtualenv之外使用pip
安装软件包,因为当它更新/覆盖系统site-packages/dist-packages
目录中的内容时,这可能会破坏你的系统。下面提供的解决方案只在系统目录中安装pip / wheels / virtualenv,即AFAIK安全,但如果有必要,还有办法解决这个问题。
您还应该考虑使用提供的轮子来安装包。这样C扩展就不需要编译了。
在线的机器上执行:
mkdir /tmp/offline
cd /tmp/offline
# your python-pip installed pip might not support wheels
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz
wget https://pypi.python.org/packages/a7/37/947b4329c4a3c72093b6c8e9b4be8c7f10c32dbb78848d3a234ce01c059d/wheel-0.30.0a0.tar.gz
wget https://pypi.python.org/packages/6f/86/3dc328ee7b1a6419ebfac7896d882fba83c48e3561d22ddddf38294d3e83/virtualenv-15.1.0-py2.py3-none-any.whl
现在下载所需的轮子(.tar.gz,如果不可用):
wget https://pypi.python.org/packages/96/4b/5251bf469f37e49e0c92f841b5b3ef01a1c9d652cc018df470e5ae235eb8/ruamel.ordereddict-0.4.9-cp27-cp27mu-manylinux1_x86_64.whl
wget https://pypi.python.org/packages/63/40/c38b857ec6a083e534ee9a9f655741120d4bfd9139232681f976cf44272b/ruamel.yaml-0.13.14-cp27-cp27mu-manylinux1_x86_64.whl
wget https://pypi.python.org/packages/b6/0c/53c42edca789378b8c05a5496e689f44e5dd82bc6861d1ae5a926ee51b84/typing-3.5.3.0.tar.gz
将六个文件复制到离线系统的新目录中,然后执行
sudo pip install pip*.tar.gz wheel*.tar.gz
sudo pip install virtualenv*
virtualenv ~/ruamel
source ~/ruamel/bin/activate
pip install typing* ruamel*
这为您提供了安装ruamel.yaml
的virtualenv,只需在此处添加您的应用程序。
此处使用的下载是2017-01-07的最新版本,如有必要,您可以使用浏览器(在线系统)获取更多最新版本。