问题:我在archlinux跑一个程序,需要python,我机器上安装的是最新的python。而程序要求python 3.7-3.11,因此调查如何在archlinux上使用多个版本的python。

pyenv

安装

1
yay -S pyenv

然后将下面几行加入~/.zshrc

1
2
3
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

(可选)pyenv-virtualenv

用 pyenv 管理 venv 更方便:

1
2
3
4
5
6
7
8
yay -S pyenv-virtualenv
# 在 shell 配置里追加(紧跟在 pyenv init 后面):
eval "$(pyenv virtualenv-init -)"
source ~/.zshrc

pyenv virtualenv 3.11.9 myenv # 基于3.11.9建虚拟环境
pyenv activate myenv # 激活
pyenv deactivate # 退出

更换python版本

想继续沿用同名 myenv(需先删除旧的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 0) 确保不在 myenv 中
pyenv deactivate 2>/dev/null || true

# 1) 备份依赖
pyenv activate myenv
pip freeze > requirements.txt
pyenv deactivate

# 2) 删除同名旧环境
pyenv virtualenv-delete -f myenv # 或:pyenv uninstall -f myenv

# 3) 安装 3.10.19(若未安装)
pyenv install -s 3.10.19

# 4) 用同名重建
pyenv virtualenv 3.10.19 myenv

# 5) 恢复依赖
pyenv activate myenv
python -m pip install -U pip
pip install -r requirements.txt

python -V # 应显示 3.10.19