天天看点

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拷贝到没有网络的环境之下,并按照之前记录下的安装顺序进行安装