Python多版本安装

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:

http://qiniu.zh-noone.cn/blog-image/python%E5%A4%9A%E7%89%88%E6%9C%AC%E5%AE%89%E8%A3%85%E9%97%AE%E9%A2%985.png

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

问题3https://stackoverflow.com/questions/57966184/libssl-so-10-cannot-open-shared-object-file-no-such-file-or-directory

问题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

本文作者:朝圣

本文链接:www.zh-noone.cn/2023/12/python多版本安装

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0许可协议。转载请注明出处!

0 条评论