我是如何通过pyenv+virtualenv在linux实现多版本Python管理

在实际开发和线上部署的时候经常因为不同的应用,使用不同的python和依赖包。经过实践通过pyenv-virtualenv实现环境不共享任何包或依赖,Python 解释器都是独立的绝对和隔离。

安装与配置(Ubuntu24)

1 安装 pyenv + pyenv-virtualenv

curl https://pyenv.run | bash

2 配置和应用 Shell 环境

将以下内容添加到 ~/.bashrc 或 ~/.zshrc

# 确保 pyenv 初始化在 PATH 设置之后
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

# 核心设置:确保 shims 优先级最高
export PATH="$PYENV_ROOT/shims:$PATH"

# 初始化 pyenv
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

说明:

export PATH=”$PYENV_ROOT/shims:$PATH” 这一步很重要,当输入python或者pip的时候会通过环境变量PATH优先找到 当前虚拟环境的命令

应用配置:

exec $SHELL

创建完全隔离的虚拟环境

1. 安装所需 Python 版本

pyenv install 3.10.6   # 安装特定版本

2. 创建虚拟环境(关键步骤)

pyenv virtualenv 3.10.6 myproject-env
  • 3.10.6:指定的 Python 版本
  • myproject-env:虚拟环境名称

3. 激活环境

pyenv activate myproject-env

激活后提示符会变化:(myproject-env) user@host:~$

验证绝对隔离

1. 检查 Python 路径

pyenv which python
# 输出: /home/user/.pyenv/versions/myproject-env/bin/python

2. 检查 pip 路径

pyenv which pip
# 输出: /home/user/.pyenv/versions/myproject-env/bin/pip

3. 检查环境信息

python -c "import sys; print(sys.prefix)"
# 输出: /home/user/.pyenv/versions/myproject-env

环境常用命令

操作	        命令
激活环境 pyenv activate <env-name>
退出环境 pyenv deactivate
列出所有环境 pyenv virtualenvs
删除环境 pyenv uninstall <env-name>
查看包安装路径 pip show <包名称>| grep Location

You May Also Like

About the Author: 一块自由的砖

码农一个,一块自由勤恳的砖,哪里需要哪里搬!( ̄▽ ̄)"