在OpenEuler22.09(也适用于CentOS7+)编译安装Python3.9,并与原Python共存-指南
指南使用操作系统:OpenEuler 22.09(网络安装,最小安装,使用默认源)
指南使用系统自带Python版本:3.10(高版本,这不是3.1喔)
1. 安装基本的编译环境
yum -y install gcc gcc-c++ make libtool zlib zlib-devel libffi-devel \
pcre pcre-devel pcre2-devel perl-devel perl-ExtUtils-Embed openssl openssl-devel
2. 下载华为仓库内的Python 3.9.2包,并进行编译安装:
华为仓库Python版本列表:https://repo.huaweicloud.com/python/
# wget[]下载Python 3.9.2包
wget -c https://repo.huaweicloud.com/python/3.9.2/Python-3.9.2.tgz
# tar将Python 3.9.2包 解压到当前目录
tar zxvf Python-3.9.2.tgz
# 进入解压好的Python-3.9.2目录内 配置编译
# 这里要注意的是GCC版本太低可能在编译的时候报could not import runpy module
# 在生产环境下进行GCC升级是有风险的,建议不启用:--enable-optimizations
cd Python-3.9.2
./configure --enable-optimizations --enable-shared
# 执行make命令来构建编译(需要等待较长时间)[SDM]
make && make install
3. 检查Python3.9是否安装成功(这里有个小意外喔)
python3 -V
# 不出意外,这里会出意外,出现以下错误[StarDarkMonarch]:
python3: error while loading shared libraries:
libpython3.9.so.1.0: cannot open shared object file: No such file or directory
# 其原因是/usr/lib64/没有python3.9的库文件
# 编译后的Python3.9的库文件放置在/usr/loacl/lib/目录内
# 解决方法如下:
cp /usr/local/lib/libpython3.* /usr/lib64
# 如果你的Linux发行版自带Python3的版本(部分Linux发行版只自带Python2.7), 会提示覆盖libpython3.so
cp: overwrite '/usr/lib64/libpython3.so'?
# 打个y,回车即可(确认覆盖[仅博客园])。
# 再次测试Python3.9是否安装成功
python3 -V
# 输出一下内容,就证明安装好Python3.9
Python 3.9.2
4. 版本共存
因为有些有的Linux发行版已经有Python3的,甚至部分程序基于系统自带的Python3的。
所以要将系统自带的Python3和自己安装Python3.9区分好,实现版本共存。
# 自己安装的Python3.9的python3软链接(快捷方式)重命名为python39
mv /usr/local/bin/python3 /usr/local/bin/python39
# 在/usr/bin/目录下创建一个名称为python39的软链接,指向/usr/local/bin/python3.9
ln -s /usr/local/bin/python3.9 /usr/bin/python39
# 啰嗦点:
# 我们只是在/usr/local/bin改了python3.9的软链接名称 & 在/usr/bin/创建了一个python3.9的软链接
# 完全没有动过系统原有Python3的东西,怎么实现原有Python3和Python3.9共存的呢?
# 原因就在那个名为python3的软链接,和linux命令行查找程序的顺序(以先找到的为准)。
# 在/usr/bin下面就有一个的python3软链接,是指向原有python3程序的。
# [仅博客园]但是/usr/local/bin/这个目录是比/usr/bin/的优先度更高。
# 所以在/usr/local/bin/下的python3软链接(指向于python3.9)优先生效。
# 在/usr/loacl/bin/下将python3.9的软连接python3改为python39,原来位于/usr/bin/下面的python3就会生效。
# 检查各版本Python的情况
python3 -V
# 输出以下内容
Python 3.10.2
python39 -V
# 输出以下内容
Python 3.9.2
至此在OpenEuler22.09编译安装Python3.9,并于原Python共存-指南已经完成
因为OpenEuler是基于CentOS系统改过来的,所以该教程对于CentOS有借鉴作用。
版权声明:本文为博客园博主「 StarDarkMonarch 」的原创文章
原文链接: https://www.cnblogs.com/freedom-eagle/p/16963519.html
遵循CC BY-NC-SA 4.0版权协议,转载、翻译请附上原文出处链接及本声明。
协议链接:https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh
原文链接: https://www.cnblogs.com/freedom-eagle/p/16963519.html
遵循CC BY-NC-SA 4.0版权协议,转载、翻译请附上原文出处链接及本声明。
协议链接:https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh