天天看點

python3環境下手工安裝paramiko

pip操作給我們帶來的無限的便利,同時也給我們帶來了無限的痛苦

目前安裝python的lib通常都是采用pip3的形式進行安裝,這種安裝的方式簡單快捷,不需要考慮安裝包的版本,以及安裝包之前的依賴關系,給我們帶來了無限的友善,但是在沒有網的環境之下,習慣于用pip操作的我們則不得不承受痛苦,在安裝python3的paramiko的時候就體驗到的這種痛苦,公司的開發環境上可以連接配接外網,而生産環境上不能連接配接外網,是以需要手動安裝lib,這樣的安裝方式導緻出現了版本不對,以及各種包的依賴關系,中間耗費了好多時間,這裡提供一個方法,為以後處理這樣的問題提供好的方案,我們這邊以paramiko包的安裝為例;

既然能夠在開發環境上采用pip安裝paramiko,我們可以直接在開發環境上采用pip安裝paramiko,指令如下:

pip3 install paramiko
           

(1)安裝過程中會出現一些日志,包括在下載下傳了那些包,下載下傳的網址是什麼,版本是什麼,根據提供的網址,我們可以知道要下載下傳哪些python3的lib,在安裝paramiko時,包括如下的lib

python3環境下手工安裝paramiko

這裡注意,我的python的版本是3.6.2,linux版本是redhat 7.2

(2)手動安裝paramiko時,這些lib的安裝是有先後順序的,我們在網絡通的情況下,paramiko已經安裝好了,仍然可以采用如下指令,他會列印出如下的資訊:

pip install paramiko

Requirement already satisfied: paramiko in /usr/local/lib/python3.6/site-packages/paramiko-2.6.0-py3.6.egg
Requirement already satisfied: bcrypt>=3.1.3 in /usr/local/lib/python3.6/site-packages (from paramiko)
Requirement already satisfied: cryptography>=2.5 in /usr/local/lib/python3.6/site-packages (from paramiko)
Requirement already satisfied: pynacl>=1.0.1 in /usr/local/lib/python3.6/site-packages (from paramiko)
Requirement already satisfied: six>=1.4.1 in /usr/local/lib/python3.6/site-packages/six-1.10.0-py3.6.egg (from bcrypt>=3.1.3->paramiko)
Requirement already satisfied: cffi>=1.1 in /usr/local/lib/python3.6/site-packages (from bcrypt>=3.1.3->paramiko)
Requirement already satisfied: asn1crypto>=0.21.0 in /usr/local/lib/python3.6/site-packages (from cryptography>=2.5->paramiko)
Requirement already satisfied: pycparser in /usr/local/lib/python3.6/site-packages (from cffi>=1.1->bcrypt>=3.1.3->paramiko)
           

我們可以這樣認為,在安裝paramiko的時候,發現缺少bcrypt,于是去下載下傳bcrypt的lib,依次往下,是以,安裝paramiko的lib及相關的lib應該是從下往上安裝的:

pip3 install pycparser-2.19.tar.gz
pip3 install asn1crypto-0.24.0-py2.py3-none-any.whl
pip3 install cffi-1.12.3-cp36-cp36m-manylinux1_x86_64.whl
pip3 install PyNaCl-1.3.0-cp34-abi3-manylinux1_x86_64.whl
pip3 install cryptography-2.7-cp34-abi3-manylinux1_x86_64.whl
pip3 install bcrypt-3.1.7-cp34-abi3-manylinux1_x86_64.whl
pip3 install paramiko-2.6.0.tar.gz
           

這裡需要注意的是,six是歸屬于PyNaCi的lib中的,是以six的lib不存在,采用這樣的方式,paramiko就安裝好了

總結下來,在不能連接配接到外網的情況下安裝python的lib,可以采用如下的步驟:

(1)在有網的環境下先安裝python的lib,并記錄下安裝該lib所需要的包,以及對應的位址,并下載下傳下來,并記錄下安裝的順序

(2)将下載下傳下來的lib拷貝到沒有網絡的環境之下,并按照之前記錄下的安裝順序進行安裝