在实际开发和线上部署的时候经常因为不同的应用,使用不同的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