深入学习OSX终端——如何解决"usr/bin/python: No module named..."错误

Learning OSX terminal in depth - How to solve the "usr/bin/python: No module named..." error

我正在重新学习控制台,并且很想深入了解错误消息。使用 Mac OSX 和 ZSH。

这里是第一个破解的:

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. 

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is
set properly.

这显然意味着安装在我的 Mac 上的 Python 之一无法加载其中一个软件包 (virtualenvwrapper)。为了定位自己,我尝试了一些方法来了解 "stats" 我的系统。

这是我试过的:

~ ❯ which python
/usr/bin/python

第一个Python(系统一,苹果自带的OSX)

~ ❯ which python3
/usr/local/bin/python3

第二个 Python(Python3,由我通过 Homebrew 包管理器安装)

~ ❯ which pip
/usr/local/bin/pip

~ ❯ which pip3
/usr/local/bin/pip3

与 pythons 相同,两个 PIP - 第一个是 "works with" 系统 Python 安装的那个,第二个是 brewed Python3.

~ ❯ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin

似乎我的 $PATH 变量在 ~/.zshrc 中设置正确(这是正确的文件吗?)

潜在罪魁祸首:

~ ❯ pip install virtualenvwrapper                                                                
Requirement already satisfied: virtualenvwrapper in /usr/local/lib/python3.6/site-packages

~ ❯ pip3 install virtualenvwrapper
Requirement already satisfied: virtualenvwrapper in /usr/local/lib/python3.6/site-packages

是这个问题吗?两个 PIP 都说我已经安装了丢失的包,但是在相同的位置(在 brewed Python3 中)。我需要重新 link 东西吗?

编辑:

我又尝试了一件事情:

printenv | less

returns这个:

WORKON_HOME=/users/edchigliak/documents/projects/.virtualenvs
PROJECT_HOME=/users/edchigliak/documents/projects
VIRTUALENVWRAPPER_PROJECT_FILENAME=.project
VIRTUALENVWRAPPER_WORKON_CD=1
VIRTUALENVWRAPPER_SCRIPT=/usr/local/bin/virtualenvwrapper.sh
VIRTUALENVWRAPPER_HOOK_DIR=/users/edchigliak/documents/projects/.virtualenvs

最后一行可能有问题。似乎 ZSH 无法获取“... _HOOK_DIR”我只是不知道如何解决这个问题。

这解决了我的问题 - 我将以下行添加到我的 shell 配置文件中(在我的例子中 ~/.zshrc):

export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3

通过这样做,我显然告诉 virtualenvwrapper 在哪里寻找 "proper" python(python 3 而不是安装的 system-wide python 2)。