Ubuntu14.04.6安装Python3.7.0记录
需要准备的东西
安装步骤
出问题的时候,再次安装需要
有可能出现的问题和需要注意的事项
参考博文,感谢博主
需要准备的东西:
OpenSSL 1.0.2 / OpenSSL 1.1.1
Python-3.7.0.tar.gz[gzip] / Python-3.7.0.tar.xz[xz]
安装步骤:
一、OpenSSL版本的检查和安装
-
检查系统自带的OpenSSL版本
openssl version
如果OpenSSL的版本为1.0.1,请重新安装OpenSSL 1.0.2 / OpenSSL 1.1.1。
-
解压OpenSSL源程序包
tar xvzf openssl-1.1.1i.tar.gz cd openssl-1.1.1i/
-
解析 ./config
./config --prefix=/usr/local/openssl111i no-zlib
这一步一定记得添加 no-zlib,否则会出现Error:
undefined symbol: SSL_CTX_get0_param
-
编译 make
make
-
安装 make install
make install
-
添加环境变量 ~/.bashrc
vi ~/.bashrc
添加
export PATH=$PATH:/usr/local/openssl/bin
或者
echo "export PATH=$PATH:/usr/local/openssl/bin" >> ~/.bashrc
然后
source ~/.bashrc
-
设置软连接
ln -s /usr/local/openssl111i/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl111i/include/openssl /usr/include/openssl
如果出现[libssl.so.1.1/libcrypto.so.1.1]: cannot open shared object file: No such file or directory
ln -s /usr/local/openssl111i/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1 ln -s /usr/local/openssl111i/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
-
现在再来看一下OpenSSL的版本
openssl version [result] OpenSSL 1.1.1i 8 Dec 2020
二、Python-3.7.0的安装
-
由于系统需要,系统自带的Python2.7和Python3.4不能卸载
-
解压Python-3.7.0源程序包
tar xvzf Python-3.7.0.tgz cd Python-3.7.0/
-
解析 ./config
./configure --prefix=/usr/local/python370 --with-openssl=/usr/local/openssl111i # 此处应该是OpenSSL的安装路径
-
修改解析产生的文件 Modules/Setup
vi Modules/Setup
#Socket module helper for SSL support; you must comment out the other #socket line above, and possibly edit the SSL variable: SSL=/usr/local/openssl111i # 此处应该是OpenSSL的安装路径 _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib -lssl -lcrypto
-
编译 make
make
-
安装 make install
make install
-
创建软连接
ln -s /usr/local/python370/bin/python3.7 /usr/bin/python3 ln -s /usr/local/python370/bin/pip3.7 /usr/bin/pip3
-
测试一下
pip3 list [result] Package Version ---------- ------- pip 21.0 setuptools 39.0.1
出问题的时候,再次安装需要:
-
清除软连接:其中包括2个Python软连接和4个OpenSSL软连接
rm /usr/bin/python3 rm /usr/bin/pip3 rm /usr/lib/libssl.so.1.1 rm /usr/lib/libcrypto.so.1.1 rm /usr/bin/openssl rm /usr/include/openssl
-
清除Python-3.7.0的安装程序及源程序包
rm -rf /usr/local/python370/ rm -rf Downloads/Python-3.7.0
-
清除OpenSSL 1.0.2 / OpenSSL 1.1.1的安装程序及源程序包
rm -rf /usr/local/openssl111i/ rm -rf Downloads/openssl-1.1.1i
-
删除OpenSSL 1.0.2 / OpenSSL 1.1.1的环境变量
vi ~/.bashrc
删除
export PATH=$PATH:/usr/local/openssl/bin
有可能出现的问题和需要注意的事项:
-
执行pip的时候出现:
Could not fetch URL https://pypi.python.org/simple/flask/: There was a problem confirming the ssl certificate: Can’t connect to HTTPS URL because the SSL module is not available. - skipping这个问题应该是安装Python的时候,执行make之前没有对Modules/Setup进行修改,请回看第11步;
-
如果已经修改了Modules/Setup,仍然出现Error:
“libssl is too old and does not support X509_VERIFY_PARAM_set1_host()”在Python3.7之后的版本,依赖的openssl,必须要是1.1或者1.0.2之后的版本,或者安装了2.6.4之后的libressl。所以可能是你的系统上的OpenSSL版本有点久了,比如我的OpenSSL版本就是1.0.1。
-
出现Error:
[libssl.so.1.1/libcrypto.so.1.1]: cannot open shared object file: No such file or directory.这个问题的解决办法是为libssl.so.1.1/libcrypto.so.1.1添加软连接,请回看第6步;
-
出现Error:
undefined symbol: SSL_CTX_get0_param这个函数就是zlib源码中的函数,需要重新编译openssl,请回到第3步,并在 ./config 命令的最后加上参数 no-zlib .
-
如果出现Error: zipimport.ZipImportError: can’t decompress data: zlib not available.
apt-get -y install zlib*
参考博文,感谢博主:
解决安装python3.7.4报错Can’'t connect to HTTPS URL because the SSL module is not available
centos6.8安装python3.7.3报错Can’t connect to HTTPS URL because the SSL module is not available问题解决…