Debian默认安装的python版本分别是2.7和3.4,但是Python3.4都快要退出舞台了,为了项目需求得提升一下python版本,想来想去最好还是用最新版本的python吧.
为了防止因卸载老版本python系统出错,所以老版本python就不卸载了,直接安装新版本python
编译安装python3.7.4,这里记录下安装过程.
安装 安装编译依赖的包
1 apt-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 8 9 wget https:// www.python.org/ftp/ python/3.7.4/ Python-3.7 .4 .tar.xz tar xf Python-*.tar.xz cd Python-* ./configure --prefix=/u sr/local/ python3.7 make make install 安装完成后执行make clean
配置
1 2 ln -s /usr/ local/python3.7/ bin/python3 /u sr/local/ bin/python37 ln -s /usr/ local/python3.7/ bin/pip3 /u sr/local/ bin/pip37
报错解决方法 ModuleNotFoundError: No module named ‘_ctypes’ 3.7版本需要一个新的包libffi-devel,要执行下面的命令
1 apt-get install libffi-dev
Fatal Python error: _PySys_BeginInit: can’t initialize sys module ./configure --enable-optimizations编译有时会报错,可能是系统或者gcc的原因,编译的时候去掉--enable-optimizations就好了.
安装python3.7后发现使用pip会出现如下报错: 1 pip 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
下载最新的openssl
1 wget https://www.openssl.org/source/old/1 .1 .1 /openssl-1 .1 .1 b.tar.gz
编译安装
1 2 3 4 5 tar xf openssl*.tar.gz cd open* ./config --prefix=/u sr/local/ openssl no-zlib make make install
备份原配置
1 2 mv /usr/ bin/openssl /u sr/bin/ openssl.bak mv /usr/i nclude/openssl/ /usr/i nclude/openssl.bak
新版配置
1 2 3 4 5 #将安装好的openssl 的openssl命令软连到/usr/ bin/openssl ln -s /usr/ local/openssl/i nclude/openssl /u sr/include/ openssl #将安装好的openssl命令软连到/usr/ bin/openssl ln -s /usr/ local/openssl/ bin/openssl /u sr/bin/ openssl
修改系统配置
1 2 3 4 echo "/usr/local/openssl/lib" >> /etc/ ld.so.conf ldconfig -v
查看openssl版本
之后重新编译安装python3.7
注意:需要指定openssl的安装路径,--with-openssl
1 2 3 ./configure --prefix=/u sr/local/ python3.7 --with-openssl=/usr/ local/openssl make make install