Debian默认安装的python版本分别是2.7和3.4,但是Python3.4都快要退出舞台了,为了项目需求得提升一下python版本,想来想去最好还是用最新版本的python吧.
为了防止因卸载老版本python系统出错,所以老版本python就不卸载了,直接安装新版本python
编译安装python3.7.4,这里记录下安装过程.
安装
安装编译依赖的包1apt-get install build-essential libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev ca-certificates -y
下载源码包1
2
3
4
5
6
7
8wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz
tar xf Python-*.tar.xz
cd Python-*
./configure --prefix=/usr/local/python3.7
make
make install
安装完成后执行make clean
配置1
2ln -s /usr/local/python3.7/bin/python3 /usr/local/bin/python37
ln -s /usr/local/python3.7/bin/pip3 /usr/local/bin/pip37
报错解决方法
ModuleNotFoundError: No module named ‘_ctypes’
3.7版本需要一个新的包libffi-devel,要执行下面的命令1apt-get install libffi-dev
Fatal Python error: _PySys_BeginInit: can’t initialize sys module
./configure --enable-optimizations编译有时会报错,可能是系统或者gcc的原因,编译的时候去掉--enable-optimizations就好了.
安装python3.7后发现使用pip会出现如下报错:1pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
python3.7需要的openssl的版本为1.0.2或者1.1.x,需要对openssl进行升级,并重新编译python3.7.4
下载最新的openssl1wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1b.tar.gz
编译安装1
2
3
4
5tar xf openssl*.tar.gz
cd open*
./config --prefix=/usr/local/openssl no-zlib #不需要zlib
make
make install
备份原配置1
2mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl/ /usr/include/openssl.bak
新版配置1
2
3
4
5#将安装好的openssl 的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
#将安装好的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
修改系统配置1
2
3
4#写入openssl库文件的搜索路径
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
#使修改后的/etc/ld.so.conf生效
ldconfig -v
查看openssl版本
之后重新编译安装python3.7
注意:需要指定openssl的安装路径,--with-openssl1
2
3./configure --prefix=/usr/local/python3.7 --with-openssl=/usr/local/openssl
make
make install