記錄centos8 升級Python3.6到Python3.9以及可能遇到的問題

文章详细介绍了如何在CentOS8系统中从Python3.6升级到3.9.9,包括下载Python源码、切换root权限、解决权限问题、编译安装、创建软链接以及将新安装的Python路径添加到PATH环境变量中。过程中提到了可能遇到的编译错误及其解决方案,如升级gcc或移除--enable-optimizations参数。
摘要由CSDN通过智能技术生成


Centos8-默认的Python、python2版本为2.7,python3版本為3.6,不符合项目的需求。现在升级到3.9

下载Python3.9.9

wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz

在这里插入图片描述

可能出現的問題及解決方案

注意這個需要在root權限下,不然會報權限不夠的錯誤,如下:

Resolving www.python.org (www.python.org)... 151.101.108.223, 2a04:4e42:8c::223
Connecting to www.python.org (www.python.org)|151.101.108.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 25787134 (25M) [application/octet-stream]
Python-3.9.9.tgz.1: Permission denied

Cannot write to ‘Python-3.9.9.tgz.1(Success).

在这里插入图片描述

切換root權限

su root 

在这里插入图片描述
默認是不顯示密碼的,打完回車就行了

安裝python3.9

解壓

tar zxvf Python-3.9.9.tgz	# 解壓

在Linux中紅色是壓縮文件;白色文件是一般性文件,如文本文件,配置文件,源码文件等。
在这里插入图片描述

蓝色代表目录
绿色代表可执行文件
红色表示压缩文件
浅蓝色表示链接文件
灰色表示其他文件
红色闪烁表示链接的文件有问题了
黄色表示设备文件。

3.7版本之后需要一个新的包libffi-devel(我沒安裝好像也不影響,暫時沒發現什麽問題)

yum install libffi-devel -y

进入python文件夹,生成编译脚本(指定安装目录)。如果這裏make的時候報錯往下面看解決方案

cd Python-3.9.9/	# 去到Python-3.9.9目錄
./configure --prefix=/usr/local/python3 --enable-optimizations	# 进入python文件夹,生成编译脚本(指定安装目录):
make # 编译
make install	# 安裝

编译:make
实际就是编译源代码,按照上一步生成makefile文件进行编译,并生成执行文件。
在 Linux环境下使用 GNU 的 make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为 Makefile 文件的编写。此文件正是 make 正常工作的基础。make 是一个命令工具,它解释 Makefile 中的指令(应该说是规则)。在 Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。所以,首先我们要将所有要编译的文件信息写到makefile中,然后执行make,make就会按照makefile进行编译,这避免了程序在调试过程中频繁输入命令进行编译。但是makefile写起来比较复杂,规则很多。

可能出現的問題及解決方案

注意!!編譯(make)的時候可能會報以下錯誤

make build_all CFLAGS_NODIST=" -fprofile-use -fprofile-correction" LDFLAGS_NODIST=""
make[1]: Entering directory `/usr/local/src/Python-3.8.0'
./python -E -S -m sysconfig --generate-posix-vars ;\
if test $? -ne 0 ; then \
	echo "generate-posix-vars failed" ; \
	rm -f ./pybuilddir.txt ; \
	exit 1 ; \
fi
Could not import runpy module
Traceback (most recent call last):
  File "/usr/local/src/Python-3.8.0/Lib/runpy.py", line 15, in <module>
    import importlib.util
  File "/usr/local/src/Python-3.8.0/Lib/importlib/util.py", line 14, in <module>
    from contextlib import contextmanager
  File "/usr/local/src/Python-3.8.0/Lib/contextlib.py", line 4, in <module>
    import _collections_abc
SystemError: <built-in function compile> returned NULL without setting an error
generate-posix-vars failed
make[1]: *** [pybuilddir.txt] Error 1
make[1]: Leaving directory `/usr/local/src/Python-3.8.0'
make: *** [profile-opt] Error 2

导致原因:

  • 在低版本的gcc版本中带有 --enable-optimizations 参数时会出现上面问题
  • gcc 8.1.0修复此问题

解决方法如下

  • 升级gcc至8.1.0【不推荐】
  • ./configure参数中去掉 --enable-optimizations

即上一個步驟執行的命令修改為:

cd Python-3.9.9/
./configure --prefix=/usr/local/python3
make
make install

安裝成功可以檢查一下python3.9編譯器

cd /usr/local/python3/bin

在这里插入图片描述

建立Python3和pip3的软鏈接:

ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

注意!!因爲我們不是安裝而是升級,原來其實是有一個python3但是是指向python3.6的,我們需要把原來的python刪掉先不然會報錯,如下

ln: failed to create symbolic link ‘/usr/bin/python3’: File exists

在这里插入图片描述
即上一個步驟執行的命令修改為:

# 删除原先的Python3和pip3
rm -rf /usr/bin/python3
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
rm -rf /usr/bin/pip3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

查看Python3和Pip3是否正确的被安装:

python3 --version 
pip3 --version

在这里插入图片描述
或者

# 注意是大寫V
python3 -V	
pip3 -V

在这里插入图片描述

到此就完成升級版本了,可能運行會有個警告說沒有添加環境變量(PATH),但是我記得不影響使用

将/usr/local/python3/bin加入PATH

# 一定要在root權限下面
vim /etc/profile	
# 不在root權限執行這一條
sudo vim /etc/profile	

按“I”,然后贴上下面内容:

  export PYTHON_HOME=/usr/local/python3
  export PATH=${PYTHON_HOME}/bin:$PATH

按ESC,输入 :wq (注意有個冒號)回车退出。

修改完执行行下面的命令,让配置生效:

source /etc/profile

因爲不配環境變量也能python -V測試所以這個也不知道怎麽證明配好了,不過之前運行pip命令下載東西要是有警告沒有配PATH應該這樣配置后就不會有警告了

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要将Linux上的Python 3.6升级3.9,可以按照以下步骤操作: 1. 确认当前系统中是否已经安装了Python 3.9。可以在终端中输入以下命令进行检查: ``` python3.9 --version ``` 如果已经安装,则会显示Python 3.9的版本号;如果没有安装,则需要先安装Python 3.9。 2. 下载Python 3.9的安装包。可以从官网下载对应系统的安装包,也可以使用包管理器进行安装。 3. 安装Python 3.9。可以使用以下命令进行安装: ``` sudo apt-get install python3.9 ``` 如果已经安装了Python 3.9,则可以跳过此步骤。 4. 更新系统中的Python链接。可以使用以下命令进行更新: ``` sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2 sudo update-alternatives --config python3 ``` 在最后一条命令中,会提示选择要使用的Python版本,选择Python 3.9即可。 5. 确认Python版本是否已经升级。可以在终端中输入以下命令进行检查: ``` python3 --version ``` 如果显示的版本号为Python 3.9,则说明升级成功。 ### 回答2: Linux系统是一种开放源代码的操作系统,而Python则是一种基于解释器的高级编程语言,它们都是在不断地更新和发展中。如果要将Linux系统上的Python3.6版本升级3.9版本,需要以下几步操作: 1. 检查Python版本 在终端输入以下命令,可以查看当前Python版本: ``` python3 -V ``` 如果显示结果为Python 3.6.x,则说明当前Python版本为3.6。 2. 安装Python3.9 访问Python官网(https://www.python.org/downloads/)下载Python3.9安装包,选择对应的Linux版本并下载。 下载完成后,在终端中进入下载路径。使用以下命令解压文件,并切换到解压后的目录中: ``` tar xzf Python-3.9.5.tgz cd Python-3.9.5 ``` 接下来,执行以下命令,安装Python3.9: ``` ./configure --enable-optimizations make -j8 sudo make altinstall ``` 以上命令中,./configure用于自动检测和配置操作系统环境;make用于编译源代码;make altinstall用于安装Python3.9,并将其与Python3.6同时存在于系统中。 3. 更改软链接 由于Linux系统中的/usr/bin/python3软链接指向的是Python3.6版本,需要对其进行更改。在终端中输入以下命令,将软链接指向Python3.9: ``` sudo ln -sf /usr/local/bin/python3.9 /usr/bin/python3 ``` 4. 验证Python版本 重新打开终端,输入以下命令,验证Python版本是否已升级3.9: ``` python3 -V ``` 如果结果显示为Python 3.9.x,则说明Python版本已经成功升级了。 总之,要升级Linux系统上的Python3.6版本为3.9,需要下载Python3.9安装包,解压并安装,更改/usr/bin/python3软链接指向Python3.9,并顺利验证是否升级成功。以上操作需要具备一定的Linux系统操作经验,如果缺乏相关知识,建议寻求专业人士的帮助。 ### 回答3: Linux是一种开源操作系统,而Python则是一种非常流行的编程语言。Python 3.6是Python的旧版本,而Python 3.9则是Python的最新版本。Python 3.9引入了一些新的特性和改进,包括更高的性能、更好的语法和更强大的库。 升级Python 3.6到Python 3.9是一项相对简单的任务。首先,确保系统上安装了必要的依赖项。为此,可以使用以下命令: $ sudo apt-get update $ sudo apt-get install build-essential checkinstall $ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev zlib1g-dev openssl libffi-dev python3-dev python3-setuptools wget 接下来,下载Python 3.9的源代码。可以在https://www.python.org/downloads/上找到Python 3.9的源代码,或者使用以下命令下载源代码: $ wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz 下载完成后,将源代码解压缩到当前目录,并使用以下命令在系统上安装Python 3.9: $ tar -xf Python-3.9.0.tgz $ cd Python-3.9.0/ $ ./configure $ make $ sudo make install 安装完成后,检查系统上所有Python版本的位置。可以使用以下命令: $ whereis python 这将显示系统上所有的Python版本的路径。为了让系统默认使用Python 3.9,可以使用以下命令: $ sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.9 1 现在,Python 3.9已经安装完成,并设置成了默认版本。可以使用以下命令检查Python的版本: $ python -V 如果Python版本为3.9,则表示升级成功。 总之,将Python 3.6升级Python 3.9是一项简单的任务,只需要按照上述步骤依次操作即可。升级到最新版本的Python可以为开发者提供更好的编程体验,以及更快、更高效的性能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值