赞
踩
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'
- 1
这是因为 Python 的编译时,如果发现系统中没有
bz2
的相关依赖,旧不会在<Python安装地址>/lib/<Python版本>/lib-dynload
路径下生成bz2
的so
文件,即没有安装bz2
相关模块。在使用这样的 Python 环境时,如果导入依赖bz2
模块的包,就会因_bz2
模块不存在而报错。
参考资料: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
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
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.
- 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
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
- 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 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.local
creating Makefile
If 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... yes
checking whether compiling and linking against OpenSSL works... yes
checking for --with-openssl-rpath... auto
checking whether OpenSSL provides required APIs... yes
Step 5:编译、安装 Python
make
make install
这个命令需要执行 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
其中的警告是因为没有将 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
如果打印类似如下日志,则说明安装正常:
Python 3.10.6
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。