场景

在构建 docker 镜像的时候为了与 TensorFlow、Pytorch 或者其他程序能兼容使用,需要安装指定版本的 python。常用的安装命令 apt-get 有时候不能很”精确“指定,甚至是找不到源。

隔山修路、遇水搭桥:python 官网有所有的版本,下载到本地手动安装。

方法

安装依赖

apt-get install libssl-dev openssl make gcc libffi-dev zlib1g-dev libbz2-dev zlibc wget

下载要安装的 python 版本并解压。这里以 python3.9 为例。
从 Python 官网下载速度很慢,这里推荐一个国内镜像网站

cd /opt
wget https://registry.npmmirror/-/binary/python/3.9.2/Python-3.9.2.tgz 
tar xzvf Python-3.9.2.tgz

进入python根目录并编译

cd Python-3.9.2
./configure
make
make install

这就完成安装了。默认安装到 usr/local/bin 路径下。

# ls /usr/local/bin/
2to3  2to3-3.9  easy_install-3.9  idle3  idle3.9  pip3  pip3.9  pydoc3  pydoc3.9  python3  python3-config  python3.9  python3.9-config

查看 PATH 路径。

# echo ${PATH}
/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

发现 usr/local/bin ,所以刚才安装的 python3.9 能直接使用。

root@a8998da2dddc:/# python3 --version
Python 3.9.2

两个路径的区别

usr/binusr/local/bin 都存放安装好的应用程序,二者有什么区别呢?

首先 usr 全程是 Unix System Resource 而不是 User 的什么缩写。

usr/bin 都是系统预装的可执行程序,会随着升级而改变。

usr/local/bin 是给用户存放自己可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件。

如果两个目录下有相同的可执行程序,PATH 路径下哪个目录在前面,该目录下的程序优先执行。

更多推荐

Ubuntu 安装指定版本 python