1. 先安装依赖的一些包:
apt-get install build-essential checkinstall
apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev zlib1g-dev\
libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
2. 进入目录:
cd /usr/local/
3. 下载和安装Python3.7.3
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
tar -zxf Python-3.7.3.tgz
rm Python-3.7.3.tgz
cd Python-3.7.3
./configure --prefix=/usr/local/Python-3.7.3
make
make install
由于系统是debian8, 通常会遇到openssl版本太低的问题。会提示_ssl build失败,那么就无法import ssl 。Python3.7需要openssl版本大于1.0.1或者LibreSSL版本大于2.6.4,如果你的版本刚好满足,就没问题。如果不满足,则需要以下处理:
4. 下载新的opensll并且安装更新
先用 apt remove openssl, 删除旧的openssl
然后,下载1.1.1版本的openssl, 所有操作的前提都是root用户登录。
cd /home/tiger
wget http://www.openssl.org/source/openssl-1.1.1.tar.gz
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1
./config --prefix=/home/tiger/openssl shared zlib
make && make install
然后:vim /home/tiger/.bash_profile
把下面这句添加到文档后面:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/tiger/openssl/lib
再执行:
source /home/tiger/.bash_profile
5. 替换原来的openssl
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /home/tiger/openssl/bin/openssl /usr/bin/openssl
ln -s /home/tiger/openssl/include/openssl /usr/include/openssl
6. 扩展默认访问库,配置
进入目录:cd /etc/ld.so.conf.d/
新建文件: vim openssl-1.1.1.conf
文件内容填:/home/tiger/openssl/lib
然后执行:ldconfig -v 重新加载库文件
验证是否安装完成执行:openssl version
发现结果是新安装的1.1.1版本,说明操作生效
7. 在/etc/profile里添加环境变量
export LDFLAGS="-L/home/tiger/openssl/lib"
export CPPFLAGS="-I/home/tiger/openssl/include"
export PKG_CONFIG_PATH="/home/tiger/openssl/lib/pkgconfig"
8. 重新编译Python3.7.3
如果之前有编译过,最好删除重新编译
cd /usr/local/Python-3.7.3/
./configure --prefix=/usr/local/Python-3.7.3 --with-openssl=/root/openssl CFLAGS=-fPIC
make
make install
然后到/usr/local/Python-3.7.3/bin/里,输入./python3.7,进入python3.7环境,import ssl,发现成功。
创建软连接:
ln -s /usr/local/Python-3.7.3/bin/python3 /usr/bin/python3
ln -s /usr/local/Python-3.7.3/bin/pip3 /usr/local/bin/pip3
如果之前有相应的软连接,请删除后再新建
至此,python3.7.3安装完毕,可以正常使用
发现一个大坑,安装在/root目下的openssl,非root用户访问不了,最好安装在其他目录下。。。。。改一下后仍可以正常使用。