之前介绍的的Zabbix脚本是用python3写的,但是centos7默认安装的是python2.7.5,所以我们需要升级到python3。
因为服务器是内网环境,不能访问外网,所以本文就对离线环境下(无网络)升级python及安装模块进行介绍。
Centos7升级python3
安装python3
先介绍参考文档,centos7将python默认版本升级。
1. 下载python-3.7.1安装包并使用xFTP上传到服务器。
2. 解压,tar -zxvf Python-3.7.1.tgz
3. 进入解压目录: cd Python-3.7.1
4. 创建安装目录: mkdir /usr/local/python3.7.1
5. 编译: ./configure --prefix=/usr/local/python3.7.1
6. 安装: make && make install
7. 备份旧链接,新建软链接: mv /usr/bin/python /usr/bin/python2.7.5
ln -s /usr/local/python3.7.1/bin/python3.7 /usr/bin/python
安装完后可以介入命令 python -V,查看是否操作成功。
修改其他受影响的文件
因为系统默认使用python2.7.5,而python2和python3是由很大不同的,所以我们要修改受影响的配置文件。
1. 修改yum的配置文件
1.1 vim /usr/bin/yum
1.2 将文件头部的 #!/usr/bin/python 改成#!/usr/bin/python2.7.5
1.3 vim /usr/libexec/urlgrabber-ext-down
1.4 将文件头部的 #!/usr/bin/python 改成#!/usr/bin/python2.7.5
安装过程中报错处理
上述是正常安装的步骤,但是在安装过程中,因为缺少网络环境,所以难免会碰到缺少依赖包导致的报错。
1. zipimport.ZipImportError: can't decompress data
参考文档如下:Python安装常见问题(1):zipimport.ZipImportError: can't decompress data
安装zlib相关依赖包,修改python安装配置文件,重新安装。
2. ModuleNotFoundError: No module named '_ctypes'
参考文档如下:关于在centos下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named '_ctypes'的解决办法
安装python3.7版本需要一个新的包libffi-devel,安装此包之后再次进行编译安装即可。
使用中碰到的问题及处理方案
python安装好后,我们就上手使用了,但是使用过程中又碰到了一些新的问题。
方向键和删除键无法使用
参考文档如下: python3方向键和删除键无法使用
安装readline-devel包,后重新编译安装。
PIP不能使用
Python不能使用PIP,因为SSL版本可能是1.0.1,python3.7版本最低支持1.0.2,需要升级ssl。
解决方案:安装ssl-dev(不用修改配置档),建立PIP软链接!
参考文档如下:
1. Python3 ssl模块不可用的问题
2. Linux学习-linux系统下python升级到python3.6步骤详解,以及遇到的问题解决
3. python安装完毕后,提示找不到ssl模块的解决步骤
综上,在升级python3之前,我们要先安装zlib相关依赖包,libffi-devel包,readline-devel包,ssl-dev等。否则,会在安装过程或者使用中碰到问题,重复编译安装~
无外网环境安装python包
参考文档如下:
1. 无外网下安装python包
2. 无网络环境用pip安装python类包
3. python安装包的离线安装方法
本文使用了两种安装方法:
1. 安装stomp时通过python setup.py install安装。
2. 安装kafka时通过pip install kafka_python-1.4.4-py2.py3-none-any.whl安装。
可以在PyPI下载安装包。