文章目录
- 前言
- 准备源码包
- 1.下载
- 2.解压
- 准备工作(重要)
- 1.下载cmake(用于编译源码)
- 2.下载必要的Module
- 注意事项
- 编译安装
- 链接并验证
- 配置环境变量
- 1.移除原3.5link
- 2.更换默认python3 的版本为3.7
- 3.添加路径
前言
为什么需要使用源码编译安装?
使用apt-get下载验证python3安装时,(sudo apt-get install python3
) 你可能会看到python3 is already the newest version (3.5.1-3)
。即你提供的仓库中不存在更高版本或者通过apt-get暂时只能安装这么高的版本。
如果你没看到这个提示,那么就可能单纯是你的仓库中没有这个版本的python,可以如下操作:
apt-get install -y software-properties-common
add-apt-repository ppa:deadsnakes/ppa
或者add-apt-repository ppa:jonathonf/python-3.7
apt-get update
apt-get install python3.7
或者尝试添加软件源:
vi /etc/apt/sources.list
# 阿里云的软件源
deb http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
#ubuntu 有科学上网可以加上,否则太慢,没用
# deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
# deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
# deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
# deb http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
# deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb http://ppa.launchpad.net/q-quark/equalx/ubuntu xenial main
更新下载源
sudo apt-get update
如果还是不行,就可以考虑从源码编译安装了。
本教程使用Python3.7.1演示安装
准备源码包
1.下载
这里提供3.7.1的源码包:
链接: https://pan.baidu.com/s/1640r2VRsH1rpmMzUW0Wb4w?pwd=hell
如何想下载其他版本的,可以官网下载:
https://www.python.org/ftp/python/
下载完成后将tar包上传到需要安装的机器上。
或者如果有科学上网也可以在命令行操作:
apt-get install wget
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
2.解压
cd ~/
tar -xzvf Python-3.7.1.tgz
如果是tar包
tar -zvf Python-3.7.1.tar
准备工作(重要)
1.下载cmake(用于编译源码)
apt-get install wget
wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz
tar -zxvf cmake-3.10.3.tar.gz
cd cmake-3.10.3
./configure
make
sudo make install
2.下载必要的Module
更新下载源:
sudo apt-get update
下载:
sudo apt-get install gcc g++ patchelf zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev lzma liblzma-dev libffi-dev libc6-dev
如果 libffi-dev无法安装,可以按下列指令单独下载:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev
注意事项
一定要下载完了再进行下一步,否则你可能会在make
编译时看到这些信息:
ModuleNotFoundError: No module named '_ctypes'
或其他module不在的报错,从而导致需要重新编译。
编译安装
#进入解压的目录
cd ~/Python-3.7.1
#创建安装目录
sudo mkdir -p /usr/local/python3
#编译并安装
./configure --prefix=/usr/local/python3 --enable-optimizations
make
sudo make install
可以参考我结束:
链接并验证
建立新的指向python3.7的软链接(类似做了一个命令映射或快捷指令)
#如果你还想保留python2则:
sudo ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
使用时:pytho3 ...
#否则添加python3的软链接
sudo ln -s /usr/local/python3/bin/python3.7 /usr/bin/python
#如果你还想保留pip则:
sudo ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
使用时:pip3 ...
#否则添加pip3的软链接
sudo ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip
如果报错就:
rm -rf /usr/bin/python
rm -rf /usr/bin/pip
e.g.
ln: failed to create symbolic link '/usr/bin/pip': File exists
则:rm -rf /usr/bin/pip
验证
配置环境变量
1.移除原3.5link
rm -rf /usr/bin/python3
2.更换默认python3 的版本为3.7
sudo ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
3.添加路径
vim ~/.bashrc
export PYTHON_LIBRARY_PATH=/usr/local/python3/lib
export PYTHON_INCLUDE_PATH=/usr/local/python3/include
export PYTHON_HOME=/usr/local/python3
export PATH=$PYTHON_HOME/bin:$PATH
soource ~/.bashrc
到此python3.7.1就安装完了,本教程也适用于其他版本的安装