Python多版本安装
[TOC]
针对多个版本的python进行安装,以及对于已存在的虚拟环境更新
安装过程
# 下载安装包
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
# 解压到指定目录,按放到指定目录存放,后面可以再次安装
tar -zxvf Python-3.7.9.tgz -C /usr/local/
# 去到安装包目录
cd /usr/local/Python-3.7.9
# 编译/安装,prefix指定安装目录,一般系统python都在/usr/bin下,所以这里为了保持一致,选择/usr/python3.7目录,注意连带问题6的影响
./configure --prefix=/usr/python3.7 && make && make install
# 软连接
ln -snf /usr/python3.7/bin/python3.7 /usr/bin/python3.7
已有虚拟环境更新
# -s 建立软连接,-n 把链接当作目录,-f 强制执行,否则如果存在则无法执行
ln -snf /usr/python3.7/bin/python3.7 /data/xxxx/venv/bin/python3.7
安装后异常问题
1.ModuleNotFoundError: No module named '_ctypes'
原因
centos7 没有安装外部函数库(Python3中有个内置模块叫ctypes,它是Python3的外部函数库模块,它提供兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用CentOS7系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库)。由于在CentOS7系统中没有安装外部函数库(libffi)的开发链接库软件包,所以出现这个问题)
解决
安装对应软件包,且重新安装
# 安装对应包
yum install libffi-devel
# make && make install
make && make install
2.ImportError: No module named '_ssl'
系统Openssl版本不对
# 查看openssl版本
openssl version
# 安装openssl openssl-devel
yum install -y openssl openssl-devel
# 重新安装
make && make install
3.libssl.so.10: cannot open shared object file: No such file or directory
yum install compat-openssl10
# 重新安装
make && make install
4.ImportError: No module named bz2
yum install bzip2-devel
# 重新安装
make && make install
5.UserWarning: Could not import the lzma module. Your installed Python is incomplete
使用pandas的时候出现该问题
yum install xz-devel
# 重新安装
make && make install
PS:在python安装的时候就已经提示该问题The necessary bits to build these optional modules were not found:
6.ModuleNotFoundError: No module named '_sqlite3'
如果configure指定路径--prefix=/usr,则即使安装对应的sqlite也无法生效,使用默认路径或者/usr/python3.7(加一层)
yum install sqlite-devel
# 重新安装
make && make install
完整无注释命令
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
tar -zxvf Python-3.7.9.tgz -C /usr/local/
cd /usr/local/Python-3.7.9
yum install -y libffi-devel openssl openssl-devel bzip2-devel xz-devel sqlite-devel
./configure --prefix=/usr/python3.7 && make && make install
ln -snf /usr/python3.7/bin/python3.7 /data/xxxx/venv/bin/python3.7
参考链接
安装https://zhuanlan.zhihu.com/p/72609906
问题1https://www.jianshu.com/p/69681655309b
问题2https://blog.csdn.net/tyhj_sf/article/details/122876807
问题4https://stackoverflow.com/questions/12806122/missing-python-bz2-module
问题5https://blog.csdn.net/dietime1943/article/details/120658063
问题6.1https://stackoverflow.com/questions/1210664/no-module-named-sqlite3
问题6.2https://stackoverflow.com/questions/59616118/no-module-named-sqlite3-python-3-7-5-centos-7