pyenv-virtualenv激活后Python版本未变更的问题求助
在M3 MacBook Air上使用pyenv-virtualenv激活虚拟环境computer_vision_env后,终端提示符显示(computer_vision_env),看似激活成功,但执行which python返回路径为/Users/testuser/.pyenv/shims/python,而非虚拟环境的预期路径/Users/testuser/.pyenv/versions/computer_vision_env/bin/python,导致pip install安装的包被存入全局环境,而非目标虚拟环境。
当前配置
通过Homebrew安装pyenv,~/.zshrc中的配置内容:
export PYENV_ROOT="$HOME/.pyenv" [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
创建虚拟环境的命令:
pyenv virtualenv 3.10.15 computer_vision_env
1. 确认依赖安装状态
先检查pyenv和pyenv-virtualenv是否都正确安装:
pyenv --version pyenv virtualenv --version
若pyenv-virtualenv未安装,执行以下命令补装:
brew install pyenv-virtualenv
2. 调整.zshrc配置顺序与内容
修改~/.zshrc中的配置,确保PATH设置无判断逻辑,且pyenv virtualenv-init -的初始化放在最后:
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
3. 加载新配置
执行命令让修改后的配置生效:
source ~/.zshrc
或直接关闭并重新打开终端。
4. 验证虚拟环境激活状态
激活虚拟环境后,执行以下命令确认状态:
pyenv version
正常输出应为computer_vision_env (set by PYENV_VERSION environment variable),同时which python需返回虚拟环境的路径。
若pyenv version未显示正确环境,手动设置环境变量:
# 仅当前目录生效 pyenv local computer_vision_env # 全局生效(谨慎使用) pyenv global computer_vision_env
5. 重建pyenv shims缓存
若shims路径仍异常,执行以下命令重建缓存:
pyenv rehash
6. 重新创建虚拟环境(可选)
若以上步骤均无效,删除现有环境后重新创建:
pyenv uninstall computer_vision_env pyenv virtualenv 3.10.15 computer_vision_env pyenv activate computer_vision_env
内容的提问来源于stack exchange,提问作者Alessandro Pranzo

