脚本系列 —— python管理神器(pyenv)

本文介绍如何在Ubuntu系统上使用pyenv工具高效地管理多个Python版本,包括在线和离线安装过程,以及如何配置环境变量和依赖库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有些时候ubuntu官方提供的那几个python版本不满足我们的使用需求,使用pyenv工具可以很方便的管理python的各个版本安装和卸载,减少了自己去浏览器下载,安装的麻烦。

一. 安装配置pyenv

1. 准备工作

(1) 设置环境变量PYENV_ROOT
通过pyenv安装的python版本会在PYENV_ROOT/versions中,可按照自己需要进行定义PYENV_ROOT(默认为${HOME}/.pyenv)。

# /etc/bash.bashrc
export PYENV_ROOT="/usr/local/src/pyenv"

(2) 依赖库
pyenv在安装python时,会需要一些依赖库,下面提供一下我安装时提示缺少的库。

sudo apt install libbz2-dev libncurses5-dev libffi-dev libreadline-dev libsqlite3-dev zlib1g-dev liblzma-dev

2. 下载pyenv

个人喜欢把下载的第三方工具源码放到/usr/local/src/中,这里的路径自己随意设置。

git clone https://github.com/pyenv/pyenv.git /usr/local/src/pyenv

3. 创建pyenv软链接

为了方便执行,将pyenv启动程序链接到/usr/local/bin下。

# 创建软连接
ln -s /usr/local/src/pyenv/bin/pyenv /usr/local/bin/pyenv

默认情况下,/usr/local/bin是在$PATH中的,如果没有,可以编辑/etc/environment,将其加入进去。

# /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

二. 安装python

1. 使用pyenv在线安装

# 查看所有python版本
sun@ubuntu:~$ pyenv install --list

# 安装python3.9.1
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地址更改为国内的镜像地址(以淘宝的镜像地址为例),我这里提供一个如下shell命令进行更改,感觉挺方便的。

在/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命令,将目录中所有版本地址都改成国内地址,如下。

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. 使用pyenv离线安装

(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

三. python的使用

参考下面文章,将python配置到update-alternatives候补选项中,方便多版本管理使用。

Linux系列讲解 —— 【update-alternatives】本地软件版本管理工具(以配置python为例)

四. 注意事项

(1) sudo提权操作会清除当前用户的环境变量。如果你是需要sudo提权来执行pyenv,需要把PYENV_ROOT添加到env_keep变量中,这样在sudo的环境中就不会清除PYENV_ROOT变量。

# /etc/sudoers
Defaults        env_keep += "PYENV_ROOT"

(2) …

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星际工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值