有些时候ubuntu官方提供的那几个python版本不满足我们的使用需求,使用pyenv工具可以很方便的管理python的各个版本安装和卸载,减少了自己去浏览器下载,安装的麻烦。
目录
一. 安装配置pyenv
1. 准备工作
(1) 确定安装路径
我准备将pyenv安装到/usr/local/bin中,先确认一下/usr/local/bin是不是在系统路径中
默认情况下,/usr/local/bin是在$PATH中的,但如果真的没有,可以编辑/etc/environment,将其加入进去。
(2) 设置环境变量PYENV_ROOT
安装python安装包时,pyenv会根据PYENV_ROOT设置的路径来安装,又由于是想让所有用户都使用,所以将下面的设置写到/etc/bash.bashrc文件中
# add PYENV_ROOT for pyenv
export PYENV_ROOT="/usr/local/src/pyenv"
(3) 提前下载依赖库
pyenv在安装python时,会需要一些依赖库,下面提供一下我安装时提示缺少的库
sudo apt install libbz2-dev libncurses5-dev libffi-dev libreadline-dev libsqlite3-dev zlib1g-dev liblzma-dev
2. 下载pyenv
sun@sun-pc:~$ git clone https://github.com/pyenv/pyenv.git /usr/local/src/pyenv
3. 在/usr/local/bin下添加pyenv的可执行程序链接
为了可以在任意地方可以执行pyenv,将pyenv启动程序链接到/usr/local/bin下
# 创建软连接
sun@sun-pc:/usr/local/bin$ ln -s /usr/local/src/pyenv/bin/pyenv /usr/local/bin/pyenv
# 确认是否创建成功
sun@sun-pc:/usr/local/bin$ ll
总用量 88000
...
lrwxrwxrwx 1 sun sun 30 2月 13 09:27 pyenv -> /usr/local/src/pyenv/bin/pyenv*
...
二. 安装配置python
1. 使用pyenv在线安装
sun@ubuntu:~$ pyenv install 3.9.1
plugins/python-build/share/python-build
中有python各个版本对应的脚本文件,pyenv通过这些文件来下载对应版本的python安装包,而这些地址都是python官网的,通常情况下国内访问国外网站速度较慢或者就不能访问,文件内容如下图所示(以3.9.1举例)
我们可以将文件中https://www.python.org/ftp/python
地址更改为国内的镜像地址,这里提供一个淘宝的镜像地址(https://cdn.npmmirror.com/binaries/python):
在/usr/local/src/pyenv/plugins/python-build/share/python-build下执行: sed -i 's/https:\/\/www.python.org\/ftp\/python/https:\/\/cdn.npmmirror.com\/binaries\/python/g' 3.9.1 |
也可以搭配grep命令,将目录中的所有文件都进行更改:
在/usr/local/src/pyenv/plugins/python-build/share/python-build下执行: grep -l "https://www.python.org/ftp/python" ./* | xargs -n 1 sed -i 's/https:\/\/www.python.org\/ftp\/python/https:\/\/cdn.npmmirror.com\/binaries\/python/g' |
2. 离线安装
(1) 下载python安装包
官网地址:https://www.python.org/downloads/
淘宝镜像:https://registry.npmmirror.com/binary.html?path=python/
下载所需版本的python包,然后拷贝到/usr/local/src/pyenv/cache
,如果没有cache目录就创建一个。
(2) 安装
#查看一下cache目录,确定包含了刚才我们下载的3.9.1安装包
sun@sun-pc:~$ ls /usr/local/src/pyenv/cache/
Python-3.8.1.tar.xz Python-3.9.1.tar.xz
#安装3.9.1
sun@sun-pc:~$ pyenv install 3.9.1
Installing Python-3.9.1...
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
Installed Python-3.9.1 to /usr/local/src/pyenv/versions/3.9.1