Python|Linux 安装 Python 3.10+ 环境步骤

长行 2024-06-24 16:07:03 阅读 82

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

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

ModuleNotFoundError: No module named '_bz2'

这是因为 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.

Step 1|安装 openssl 依赖的环境

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

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

wget https://www.openssl.org/source/openssl-1.1.1n.tar.gztar -zxvf openssl-1.1.1n.tar.gzcd openssl-1.1.1n

Step 3|配置 openssl

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

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

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.

则执行:

yum install -y perl-CPAN

perl -MCPAN -e shell

在 perl 启动后执行:

install IPC/Cmd.pm

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

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

Step 4|编译、安装 openssl

make

make install

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

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

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

openssl version

显示如下内容即可:

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

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

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

/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.1sudo ln -s /usr/local/openssl/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1sudo ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1sudo ln -s /usr/local/openssl/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

参考资料: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

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

tar -xvf Python-3.10.6.tgz

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

Step 3:进入解压后的目录

cd Python-3.10.6

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

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

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

creating Modules/Setup.localcreating MakefileIf you want a release build with all stable optimizations active (PGO, etc),please run ./configure --enable-optimizations

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

checking for openssl/ssl.h in /usr/local/openssl... yeschecking whether compiling and linking against OpenSSL works... yeschecking for --with-openssl-rpath... autochecking whether OpenSSL provides required APIs... yes

Step 5:编译、安装 Python

make

make install

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

Processing /tmp/tmp29iyxren/setuptools-47.1.0-py3-none-any.whlProcessing /tmp/tmp29iyxren/pip-20.1.1-py2.py3-none-any.whlInstalling 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

其中的警告是因为没有将 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

说明在 /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

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

Python 3.10.6



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。