深入学习OSX终端:解决/usr/bin/python找不到virtualenvwrapper模块错误
我之前在Mac OSX用ZSH的时候也碰到过一模一样的报错,这问题核心是系统默认的Python(也就是/usr/bin/python,属于Python2版本)找不到你安装的virtualenvwrapper模块——大概率是你用Python3的pip装的工具,却让Python2去加载,环境变量没配对上。
先把你遇到的报错贴出来方便对照:
Last login: Thu Mar 29 16:00:27 on ttys000
/usr/bin/python: No module named virtualenvwrapper
virtualenvwrapper.sh: There was a problem running the initialization hooks.
若Python无法导入virtualenvwrapper.hook_loader模块,请检查是否已为VIRTUALENVWRAPPER_PYTHON=/usr/bin/python安装virtualenvwrapper,且PATH配置正确。
下面是一步步的解决方法:
第一步:确认Python3和virtualenvwrapper的安装路径
打开终端,先找到你的Python3位置:which python3一般会输出类似
/usr/local/bin/python3(Intel芯片Mac)或者/opt/homebrew/bin/python3(M系列芯片Mac)。再确认virtualenvwrapper的安装位置:
pip3 show virtualenvwrapper重点看输出里的
Location字段,同时virtualenvwrapper.sh脚本通常会放在Python3对应的bin目录下(和python3同路径的文件夹)。第二步:修改ZSH配置文件,设置正确的环境变量
打开~/.zshrc文件(用nano、VS Code等编辑器都可以),添加以下内容,把路径替换成你刚才查到的:# 指定virtualenvwrapper使用Python3版本 export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 # 指定virtualenv工具的路径 export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv # 加载virtualenvwrapper初始化脚本 source /usr/local/bin/virtualenvwrapper.sh注意:M系列Mac的路径要换成
/opt/homebrew/bin/python3这类对应路径。第三步:确保virtualenvwrapper已正确安装
如果你不确定是否安装,或者之前用Python2的pip装过,用Python3的pip重新安装:pip3 install virtualenv virtualenvwrapper别用
pip(对应Python2),毕竟Python2已经停止维护了,优先用Python3的工具链。第四步:重新加载ZSH配置
在终端输入命令让配置生效:source ~/.zshrc如果没有报错,说明问题解决了,可以试试用
mkvirtualenv命令创建虚拟环境测试一下。
内容的提问来源于stack exchange,提问作者Alexander Starbuck

