Linux 下 python3.9.8的安装
1. 准备安装环境
- centos
yum install gcc zlib* openssl* -y
yum install sqlite-devel -y
yum install bzip2 bzip2-devel -y
yum install xz-devel -y
yum install python-backports-lzma -y
yum install mesa-libGL -y
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
- ubuntu
更新服务器
apt update && apt upgrade -y
安装环境依赖
apt install zlib* -y
apt install build-essential zlib1g -y
apt install libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev -y
2. linux 下 python 安装包的获取
官网下载地址:
https://www.python.org/downloads/
找到 自己想要的版本。
方式一:直接点击该链接下载,然后将安装包通过xftp 传送到远程服务器 的
/opt
路径下
方式二:
- 右键复制该链接:
在 opt 路径下,使用wget命令下载:
cd /opt
wget https://www.python.org/ftp/python/3.9.8/Python-3.9.8.tgz
- 如果系统没有wget ,先下载 wget ,再重复上一步。
yum -y install wget
3. 解压刚刚下载的安装包
tar -xzvf Python-3.9.8.tgz
并将解压后的文件夹更名 (非必要步骤)
mv Python-3.9.8 python398
将刚刚解压更名后的文件夹移动到自己的想要的安装位置,并更名
mv python398 /usr/local
4. 进入该文件夹目录,编译安装
cd /usr/local/python398
./configure --prefix=/usr/local/python398 --enable-optimizations
–prefix 参数是指定安装目录.
- 编译:
make
- 编译成功后,编译安装:
make install
注:上面也可以组合一下
make && make install
短路写法只有编译成功之后才会进行后边的编译安装,前边失败后边是不会执行的。
5. 检查是否安装成功
检查python3.9的编译器:
cd /usr/local/python398/bin
./python3.9
显示python 窗口即可。
6. 配置环境变量
vim /etc/profile
export PYTHON_HOME=/usr/local/python398
export PATH=${PYTHON_HOME}/bin:$PATH
使得配置的环境变量立即生效:
source /etc/profile
7. 配置软连接
ln -s /usr/local/python398/bin/python3.9 /usr/bin/python39
ln -s /usr/local/python398/bin/pip3.9 /usr/bin/pip39
报错情况:
问题1: Python安装报错 configure: error: in `/usr/local/python3/Python':
报错描述:
[root@localhost Python-3.5.4]# ./configure --prefix=/usr/local/python3.5
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for python3.5... no
checking for python3... no
checking for python... python
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... linux
checking for --without-gcc... no
checking for --with-icc... no
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/usr/local/python3/Python-3.5.4':
configure: error: no acceptable C compiler found in $PATH
问题分析:缺少gcc编译环境
解决方法:
yum -y install gcc
问题2: 安装python时出现Ignoring ensurepip failure:pip required SSL/TLS
报错描述:
Ignoring ensurepip failure: pip 9.0.1 requires SSL/TLS
问题分析:缺少openssl-devel包
解决方法:
yum -y install openssl-devel
问题3:如何设置环境变量,直接输入python3就可以进入python3版本
解决方法:
echo "export PATH=$PATH:/usr/local/python3/bin/" >> /etc/profile.d/python3.sh
export PATH=$PATH:/usr/local/python3/bin/
问题4:如果装了ipython,如何在python2,python3都可以使用ipyhon
解决方法:
先使用pip2 -V 和 pip3 -V 确认对应的python版本正确
之后
pip2 install ipython 安装python2的
pip3 install ipython 安装python3的
问题5:ModuleNotFoundError: No module named '_sqlite3'
解决:
1,首先安装 sqlite-devel
yum install sqlite-devel
2,重新编译安装Python
./configure --prefix=/usr/local/python398 --enable-optimizations
make clean & make && make install
问题6:No module named '_bz2'
解决:
1,首先安装
yum -y install bzip2 bzip2-devel
2,重新编译安装Python
./configure --prefix=/usr/local/python398 --enable-optimizations
make clean &make && make install
问题7:报错如下:
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参数
解决方法(推荐方式三):
方式一:1、升级gcc至高版本,gcc 8.1.0已修复此问题
方式二:./configure参数中去掉–enable-optimizations
方式三: make clean& make && make install (推荐这种方式)
升级gcc解决:
yum install centos-release-scl -y
yum install devtoolset-10-gcc* -y
安装完成后新版的gcc与g++安装在/opt/rh/devtoolset-10目录下,如果需要临时生效,可以执行:
source /opt/rh/devtoolset-10/enable
如果需要永久生效,可以把devtoolset-8里的gcc和g++链接到/usr/bin去:
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-10/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-10/root/bin/g++ /usr/bin/g++
再用gcc -v就能看到版本已变为10.2.1-11。此时编译出的内核模块就能正常rmmod卸载了。
最后shell中执行ipython或ipython3会进入不同的python版本