当前位置:   article > 正文

Python|Linux 安装 Python 3.10+ 环境步骤_linux安装python3.10

linux安装python3.10

Step 1:在 Linux 中安装前置依赖环境

sudo yum install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make zlib zlib-devel libffi-devel -y
  • 1

未执行此步骤的表现|如果没有安装这些依赖,则会出现报错类似如下找不到模块的报错信息。

ModuleNotFoundError: No module named '_bz2'
  • 1

这是因为 Python 的编译时,如果发现系统中没有 bz2 的相关依赖,旧不会在 <Python安装地址>/lib/<Python版本>/lib-dynload 路径下生成 bz2so 文件,即没有安装 bz2 相关模块。在使用这样的 Python 环境时,如果导入依赖 bz2 模块的包,就会因 _bz2 模块不存在而报错。

Step 2:编译、安装新版本的 openssl

参考资料:https://blog.csdn.net/weixin_44894162/article/details/126342591

参考资料:https://blog.csdn.net/bo_self_effacing/article/details/123628224

在 Python 3.10 及之后的版本,还需要安装新版本的 openssl,Linux 默认版本无法满足要求。

未执行此步骤的表现|如果没有安装新版本的 openssl,那么在使用 pip 安装包时,旧会出现类似如下的报错。如出现报错此报错,则需要先重新执行 ./configure 后,再重新编译、安装 Python 环境。

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
  • 1

Step 1|安装 openssl 依赖的环境

sudo yum install gcc libffi-devel zlib* openssl-devel
  • 1

Step 2|下载、解压新版本的 openssl 安装包(安装 1.1.1N 版本即可)

wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz
tar -zxvf openssl-1.1.1n.tar.gz
cd openssl-1.1.1n
  • 1
  • 2
  • 3

Step 3|配置 openssl

./config --prefix=/usr/local/openssl
  • 1

相关报错及处理方法|如果出现报错如下:

Can't locate IPC/Cmd.pm in @INC (@INC contains: /data/py_src/openssl-3.0.1/util/perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /data/py_src/openssl-3.0.1/external/perl/Text-Template-1.56/lib) at /data/py_src/openssl-3.0.1/util/perl/OpenSSL/config.pm line 18.
BEGIN failed--compilation aborted at /data/py_src/openssl-3.0.1/util/perl/OpenSSL/config.pm line 18.
Compilation failed in require at /data/py_src/openssl-3.0.1/Configure line 23.
BEGIN failed--compilation aborted at /data/py_src/openssl-3.0.1/Configure line 23.
  • 1
  • 2
  • 3
  • 4

则执行:

yum install -y perl-CPAN
  • 1
perl -MCPAN -e shell
  • 1

在 perl 启动后执行:

install IPC/Cmd.pm
  • 1

安装完成后,重新继续安装 openssl 即可。

参考资料:https://blog.csdn.net/qq_44768464/article/details/136076394

Step 4|编译、安装 openssl

make
  • 1
make install
  • 1

如果需要的话,可以将安装的映射到 use/bin 中:

sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
  • 1

映射后,可查看安装的 openssl 的版本:

openssl version
  • 1

显示如下内容即可:

OpenSSL 1.1.1n  15 Mar 2022 (Library: OpenSSL 1.1.1c  28 May 2019)
  • 1

相关报错及处理方法|如果出现报错如下:

openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
  • 1

/usr/local/openssl/lib/usr/local/openssl/lib64/ 路径中,寻找是否存在缺失的依赖包,将它们重新定向到 /usr/lib/usr/lib64 路径下即可。

sudo ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1
sudo ln -s /usr/local/openssl/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
sudo ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
sudo ln -s /usr/local/openssl/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
  • 1
  • 2
  • 3
  • 4

参考资料:https://blog.csdn.net/qq_45742250/article/details/134876045

Step 3:编译、安装 Python

Step 1:下载需要安装的 Python 程序源码。找到目标版本,选择 Gzipped source tarball,复制目标版本源码的下载地址并下载到本地:

wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz
  • 1

Step 2:解压 Python 程序源码到当前目录

tar -xvf Python-3.10.6.tgz
  • 1

上述命令会将 Python-3.8.5.tgz 中的文件解压到 Python-3.8.5 文件夹下

Step 3:进入解压后的目录

cd Python-3.10.6
  • 1

Step 4:配置 Python 源码编译后的安装路径

./configure --prefix=/usr/local/python3.10 --with-openssl=/usr/local/openssl --with-openssl-rpath=auto
  • 1

这个命令需要执行 5 - 20 秒左右,如果打印的日志末尾为如下内容,则说明执行成功:

creating Modules/Setup.local
creating Makefile


If you want a release build with all stable optimizations active (PGO, etc),
please run ./configure --enable-optimizations
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

往上看一点日志,检查 openssl 相关的四个检查项结果是否正常,预期如下:

checking for openssl/ssl.h in /usr/local/openssl... yes
checking whether compiling and linking against OpenSSL works... yes
checking for --with-openssl-rpath... auto
checking whether OpenSSL provides required APIs... yes
  • 1
  • 2
  • 3
  • 4

Step 5:编译、安装 Python

make
  • 1
make install
  • 1

这个命令需要执行 3 - 10 分钟左右,如果打印的日志末尾为如下内容,则说明执行成功:

Processing /tmp/tmp29iyxren/setuptools-47.1.0-py3-none-any.whl
Processing /tmp/tmp29iyxren/pip-20.1.1-py2.py3-none-any.whl
Installing collected packages: setuptools, pip
  WARNING: The script easy_install-3.10 is installed in /usr/local/python3.10/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The scripts pip3 and pip3.10 are installed in '/usr/local/python3.10/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-20.1.1 setuptools-47.1.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

其中的警告是因为没有将 Python 环境添加到 PATH 中,不影响正常使用。

相关报错及处理方法|如果出现如下报错信息:

*** WARNING: renaming "_ssl" since importing it failed: /data/py_src/Python-3.10.6/build/lib.linux-x86_64-3.10/_ssl.cpython-310-x86_64-linux-gnu.so: undefined symbol: OPENSSL_sk_num
*** WARNING: renaming "_hashlib" since importing it failed: /data/py_src/Python-3.10.6/build/lib.linux-x86_64-3.10/_hashlib.cpython-310-x86_64-linux-gnu.so: undefined symbol: HMAC_CTX_new
  • 1
  • 2

说明在 /usr/local/openssl/lib/usr/local/openssl/lib64/ 路径以及 openssl 的路径中存在多个版本相互冲突。将 openssl 文件夹以及链接全部删除,重新解压缩、配置、编译、安装 openssl 后,再重新配置、编译、安装 Python。

Step 6|执行刚才指定的安装目录中的 bin 路径中的 python3,添加 --version 参数查看 Python 版本:

/usr/local/python3.10/bin/python3 -- version
  • 1

如果打印类似如下日志,则说明安装正常:

Python 3.10.6
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/739232
推荐阅读
相关标签
  

闽ICP备14008679号