You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac Catalina切换zsh后mkvirtualenv无法创建虚拟环境且版本异常

解决Mac Catalina下zsh中virtualenvwrapper默认使用Python3而非指定Python2.7的问题

你的核心问题在于virtualenvwrapper的安装版本与你指定的Python版本不匹配,再加上配置细节的小疏漏,导致环境创建路径错误、Python版本不生效。下面一步步帮你排查修复:

1. 先理清pip与Python版本的关联

你之前用pip install安装的virtualenvwrapper,大概率关联到了Python3(Catalina中默认pip可能指向pip3)。这就导致即使你在.zshrc里指定了VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7,实际执行创建环境的virtualenv命令还是Python3版本的,自然会用Python3来生成环境。

先确认这个关键点:

# 查看当前pip关联的Python版本
pip --version
# 查看Python2.7对应的pip版本
pip2 --version

如果pip --version显示的是Python3.x,那就是这个问题导致的。

2. 用Python2.7的pip重新安装依赖

先彻底卸载现有包,再用Python2.7专属的pip重新安装:

# 卸载现有virtualenv和virtualenvwrapper
pip uninstall -y virtualenv virtualenvwrapper
# 用Python2.7的pip安装对应版本
pip2 install virtualenv virtualenvwrapper

3. 修正.zshrc的配置细节

之前的配置有两个潜在问题:

  • source \which virtualenvwrapper.sh` 可能会指向Python3版本的脚本,因为which`会优先找PATH里的第一个匹配项;
  • 要确保WORKON_HOME的路径没有多余符号(你提到的双斜杠问题,虽然配置里写法正确,但要避免拼写错误)。

修改.zshrc的配置为:

# 指定virtualenvwrapper使用的Python解释器为2.7
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7
# 指定虚拟环境存放目录,确保路径无错误
export WORKON_HOME="$HOME/.virtualenvs"
# 直接指定Python2.7对应的virtualenvwrapper.sh路径(避免which的歧义)
# 若不知道路径,可执行`pip2 show virtualenvwrapper`找到Location字段,再拼接/bin/virtualenvwrapper.sh
source /usr/local/bin/virtualenvwrapper.sh

4. 清理错误的环境结构并重新加载配置

之前创建的testenv被错误地放在了~/.virtualenvs/bin下(正常应该是每个环境单独占一个子目录),先删除这个错误结构:

rm -rf ~/.virtualenvs/bin

然后重新加载配置:

source ~/.zshrc

5. 验证修复效果

现在创建测试环境:

mkvirtualenv testenv

执行后应该会显示使用Python2.7的前缀,环境会被正确创建在~/.virtualenvs/testenv目录下。

验证步骤:

  • 执行lsvirtualenv应该能看到testenv;
  • 进入环境:workon testenv,然后执行python --version,应该显示Python 2.7.x。

关于bash下同样的问题

你切换到bash也出现相同问题,是因为bash的配置文件(.bashrc或.bash_profile)里可能也用了Python3版本的virtualenvwrapper。你可以把上述配置同步到bash的配置文件中,确保bash也使用Python2.7版本的工具链。

内容的提问来源于stack exchange,提问作者Alesi Rowland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 10:27:41