2017-03-07 1529 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