2017-03-07 1527 views
1

我想在Centos 7机器中安装ruamel.yaml python库,我没有互联网连接。我尝试这样做:如何离线安装ruamel.yaml python库?

  1. 安装libyaml-devel的,蟒蛇-PIP使用本地存储库中的python-devel的

  2. 下载ruamel.yaml-0.13.14.tar & ruamel.ordereddict-0.4.6 .tar(依赖)来自pypi。 。

  3. 现在我可以使用PIP install来安装ruamel.ordereddict, 但是当我试图以同样的方式来安装ruamel.yaml,我得到了以下异常:

    [[email protected] 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

下列命令行上显示的是什么? python -c“print __import __('pkg_resources').__ file \ _ \ _” – Bemmu

+0

@Bemmu它给予** AttributeError:'module'对象没有属性'declare_namespace'**错误。 – abhishek

+0

https://github.com/pypa/pip/issues/2679 – nir0s

回答

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 installe一个的virtualenv d,只需在那里添加你的应用程序。

此处使用的下载数据是2017-01-07当前的最新数据,如有必要,您可以使用浏览器(在线系统)获取更新的数据。

+0

感谢您的回复,我遵循了您提到的步骤,在最后一步我得到了'(ruamel)[abhishek @ limulus ruamel] $ pip install typing * ruamel * ruamel.ordereddict-0.4.9-cp26-cp26mu- manylinux1_x86_64.whl不是这个平台上支持的轮子。' – abhishek

+0

我的linux版本:'[abhishek @ limulus ruamel] $ uname -a Linux limulus.example.com 3.10.0-327.36.1.el7.x86_64#1 SMP Sun Sep 18 13:04:29 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux' – abhishek

+0

我在复制和粘贴时犯了一个错误,您需要ruamel.ordereddict为2.7而不是Python 2.6,对不起 – Anthon