在Ubuntu 16.04(18.04) 系统上编译安装Python 3.8 方法
安装编译依赖
sudo apt install -y wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
sudo apt update
下载解压源码
sudo wget https://www.python.org/ftp/python/3.8.0/Python-3.8.6.tgz
tar xf Python-3.8.6.tgz
设置编译参数
cd Python-3.8.6/
./configure --prefix=/usr/local/python3 --enable-optimizations
编译及安装
sudo make && sudo make install
如有需要 make 编译完后可以将整个源码包打包
打包命令
tar cf py38make.tar Python-3.8.6 && gzip py38make.tar
到相同配置的机器上安装,适用于云端多台相同的服务器
sudo rm -rf Python-3.x.x # 删除旧的源码文件夹
sudo rm -rf /usr/local/python3/ # 删除旧二进制文件
解压命令
tar xf py38make.tar.gz
cd Python-3.8.6
sudo make && sudo make install # 安装3.8 版本
软连接pip3 和python3.8,-f 强制创建有则覆盖
sudo ln -sf /usr/local/python3/bin/python3.8 /usr/bin/python3.8
sudo ln -sf /usr/local/python3/bin/pip3 /usr/bin/pip3
测试pip 安装软件
pip list
可能出现报错
File "/usr/local/lib/python3.8/subprocess.py", line 395, in check_output
**kwargs).stdout
File "/usr/local/lib/python3.8/subprocess.py", line 487, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.
注意:是/usr/local/lib/python3.8/路径下缺少lsb_release.py文件(具体报错路径查看自己电脑报错路径),解决方法
sudo find / -name 'lsb_release.py'
# 注意查看自己报错路径再复制
sudo cp /usr/lib/python3/dist-packages/lsb_release.py /usr/local/lib/python3.8/
pip list
升级pip
sudo pip install --upgrade pip