CentOS7.3 1611 pip离线安装python模块whl文件的陷阱

1 篇文章 0 订阅
1 篇文章 0 订阅

1、环境简述

本人目前的项目要求是为一台centos7.3的服务器增加一个可以邮件报警的脚本,服务器运行在内网中,脚本预警项目检测部分使用shell脚本实现,发送邮件部分使用python3实现,邮件使用内部邮件服务器,所以需要离线安装所有部分。

2、安装过程

1、源码包安装python3.7.9

安装依赖
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

编译安装
tar xf Python-3.7.9.tar.xz
cd /Python-3.7.9
./configure --prefix=/usr/bin/python3.7.9
make
make install

2、获取pypi模块依赖列表

由于发送邮件需要使用exchangelib-3.3.2模块实现,所以需要安装此模块及其依赖模块
在可连接外网的测试环境通过网络安装

外网环境安装
/usr/bin/python3.7.9/bin/pip3 install exchangelib-3.3.2

将安装过程保存下来,筛选出其中的包名称和安装顺序,我筛选出的顺序如下

pip-21.0.1-py3-none-any.whl
lxml-4.6.2-cp37-cp37m-manylinux1_x86_64.whl
urllib3-1.26.3-py2.py3-none-any.whl
idna-2.10-py2.py3-none-any.whl
chardet-4.0.0-py2.py3-none-any.whl
certifi-2020.12.5-py2.py3-none-any.whl
requests-2.25.1-py2.py3-none-any.whl
defusedxml-0.6.0-py2.py3-none-any.whl
Pygments-2.8.0-py3-none-any.whl
cached_property-1.5.2-py2.py3-none-any.whl
oauthlib-3.1.0-py2.py3-none-any.whl
tzdata-2021.1-py2.py3-none-any.whl
backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl
pycparser-2.20-py2.py3-none-any.whl
cffi-1.14.5-cp37-cp37m-manylinux1_x86_64.whl
cryptography-3.4.6-cp36-abi3-manylinux2014_x86_64.whl
ntlm_auth-1.5.0-py2.py3-none-any.whl
requests_ntlm-1.1.0-py2.py3-none-any.whl
dnspython-2.1.0-py3-none-any.whl
requests_oauthlib-1.3.0-py2.py3-none-any.whl
pytz-2021.1-py2.py3-none-any.whl
tzlocal-2.1-py2.py3-none-any.whl
six-1.15.0-py2.py3-none-any.whl
isodate-0.6.0-py2.py3-none-any.whl
exchangelib-3.3.2-py2.py3-none-any.whl

3、获取pypi模块文件(*.whl)

按照上述列表,在==https://pypi.org/project/pip/==这个网站中可以搜索whl包名获取下载,演示如下

3.1、搜索栏输入包名加版本号

3.1.1、例如找exchangelib-3.3.2-py2.py3-none-any.whl
	则搜索exchangelib-3.3.2

3.1.2、在搜索结果中选择包名和版本都对应的包
	点击左侧 Download files 按钮,在列表中点击完全一致的包名,下载,保存即可

3.1.3、如果没有完全对应的,则选包名完全一致的
	点击左侧 Release history 选择所需要的版本,然后点击左侧 Download files 按钮,在列表中点击完全一致的包名,下载,保存即可

4、安装whl文件

注意!坑来了
在Linux中,可能同时存在多个python版本,例如我的实际环境中同时存在python2.7.5版本、Python 3.6.8版本、和Python 3.7.9版本。
并且,每个版本的多个pip都是互相独立的(如图),所以,使用pip安装的时候必须找到真正对应的pip命令才能正确安装,并且使用对应的python命令执行,才能有正确的执行结果

错误执行 可能出现的异常报错包括:网络报错、版本不支持
在这里插入图片描述
我是使用此目录中的pip3安装的文件,python3执行的脚本,安装命令如下

/usr/bin/python3.7.9/bin/pip3 install pip-21.0.1-py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install lxml-4.6.2-cp37-cp37m-manylinux1_x86_64.whl
/usr/bin/python3.7.9/bin/pip3 install urllib3-1.26.3-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install idna-2.10-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install chardet-4.0.0-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install certifi-2020.12.5-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install requests-2.25.1-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install defusedxml-0.6.0-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install Pygments-2.8.0-py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install cached_property-1.5.2-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install oauthlib-3.1.0-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install tzdata-2021.1-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl
/usr/bin/python3.7.9/bin/pip3 install pycparser-2.20-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install cffi-1.14.5-cp37-cp37m-manylinux1_x86_64.whl
/usr/bin/python3.7.9/bin/pip3 install cryptography-3.4.6-cp36-abi3-manylinux2014_x86_64.whl
/usr/bin/python3.7.9/bin/pip3 install ntlm_auth-1.5.0-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install requests_ntlm-1.1.0-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install dnspython-2.1.0-py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install requests_oauthlib-1.3.0-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install pytz-2021.1-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install tzlocal-2.1-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install six-1.15.0-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install isodate-0.6.0-py2.py3-none-any.whl
/usr/bin/python3.7.9/bin/pip3 install exchangelib-3.3.2-py2.py3-none-any.whl

pip3已经安装模块的展示

[root@gsmcenter bin]# /usr/bin/python3.7.9/bin/pip3 list
Package            Version
------------------ ---------
backports.zoneinfo 0.2.1
cached-property    1.5.2
certifi            2020.12.5
cffi               1.14.5
chardet            4.0.0
cryptography       3.4.6
defusedxml         0.6.0
dnspython          2.1.0
exchangelib        3.3.2
idna               2.10
isodate            0.6.0
lxml               4.6.2
ntlm-auth          1.5.0
oauthlib           3.1.0
pip                21.0.1
pycparser          2.20
Pygments           2.8.0
pytz               2021.1
requests           2.25.1
requests-ntlm      1.1.0
requests-oauthlib  1.3.0
setuptools         47.1.0
six                1.15.0
tzdata             2021.1
tzlocal            2.1
urllib3            1.26.3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值