首页 > 系统相关 >在OpenEuler22.09(也适用于CentOS7+)编译安装Python3.9,并与原Python共存-指南

在OpenEuler22.09(也适用于CentOS7+)编译安装Python3.9,并与原Python共存-指南

时间:2022-12-07 16:47:45浏览次数:72  
标签:bin Python CentOS7 OpenEuler22.09 usr 3.9 python3 Python3.9

指南使用操作系统: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目录内 配置编译
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有借鉴作用。

教别人是最好的学习。本指南允许借鉴,但不允许复制抄袭,仅发布于博客园!!

标签:bin,Python,CentOS7,OpenEuler22.09,usr,3.9,python3,Python3.9
From: https://www.cnblogs.com/freedom-eagle/p/16963519.html

相关文章

  • 非常有用的python单行代码
    1推导式应用1.1列表推导式(一行for循环)#For循环在一行mylist=[200,300,400,500]#正常方式result=[]forxinmylist:ifx>250:result.a......
  • python实现移动二级目录下的文件到一级目录
    python实现移动二级目录下的文件到一级目录importosimportshutilimportsysdefmove_to_work_folder(work_path,cur_path):"""将work_folder下的所有子......
  • Centos7 strongswan configure.ac PKG_CHECK_VAR
    在configure.ac前边添加以下内容:#backwardscompatwitholderpkg-config#-pullinAC_DEFUNfrompkg.m4m4_ifndef([PKG_CHECK_VAR],[#PKG_CHECK_VAR(VARIABLE......
  • Python模块pathlib操作文件和目录操作总结
    前言目前大家常用的对于文件和操作的操作使用 ​​os.path​​ 较多,比如获取当前路径​​os.getcwd()​​,判断文件路径是否存在​​os.path.exists(folder)​​ 等等。......
  • 力扣540(java&python)-有序数组中的单一元素(中等)
    题目:给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足O(logn)时间复......
  • CentOS7 通过编译RPM包升级OpenSSH-8.8
    编译环境系统版本:CentOS7软件版本:openssh-8.8p1.tar.gzx11-ssh-askpass-1.2.4.1.tar.gz编译OpenSSH依赖包yuminstallrpm-buildzlib-developenssl-devel......
  • Python 日志记录-loguru
    Python日志记录-loguru使用logging模块时用python写代码时,logging模块最基本的几行配置,如下:importlogginglogging.basicConfig(level=logging.INFO,format='%(ascti......
  • python字符串常用方法汇总
    常用方法如下:str="mynameis{name}andmyageis{age}"#统计字符串的长度print(len(str))#格式化输出也可当切片用的方式print(str.format(name="ming",ag......
  • 使用python opencv延时摄影
    以下内容和源码使用openai的chatGPT生成。下面是一个示例代码,它使用OpenCV库在Python中实现这个功能。请注意,这个程序需要您先安装OpenCV库。我们设置了摄像头编......
  • CSV__04--python使用迭代器读取csv文件出现读取结果为空的解决办法
    1迭代器的概念迭代器(iterator)有时又称光标(cursor)是程序设计的软件设计模式,可在容器对象(container,例如链表或数组)上遍访的接口。2迭代器的特点强制性:必须将元素从迭代......