Python Virtualenv – 没有名为virtualenvwrapper.hook_loader的模块

我正在运行Mac OS 10.6.8。 并想除了python 2.6以外还安装python 2.7,并在新的virtualenv中使用python 2.7。 我执行了以下步骤:

我下载了python 2.7并安装了它:

http://www.python.org/ftp/python/2.7.3/python-2.7.3-macosx10.6.dmg 

然后我运行这个命令来使用python2.7build立一个新的virtualenv:

 mkvirtualenv --python=python2.7 mynewenv 

我的.bash_profile如下所示:

 # needed for virtualenvwrapper export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv source /usr/local/bin/virtualenvwrapper.sh # Setting PATH for Python 2.7 # The orginal version is saved in .bash_profile.pysave PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" export PATH 

现在当我打开控制台,我得到以下错误信息。

 ImportError: No module named virtualenvwrapper.hook_loader virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenv has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python and that PATH is set properly. 

我也在另一个post中发现我应该升级virtualenvwrapper。 这没有帮助。

 sudo pip install virtualenvwrapper --upgrade 

任何帮助,将不胜感激。

问题解决了以下步骤:

 #switch the /usr/bin/python link to point to current python link cd /usr/bin sudo mv python python.bak sudo ln -s /Library/Frameworks/Python.framework/Versions/Current/bin/python python 

重新排列导出命令,以便将其放在我的.bash_profile文件中的virtualenv命令之前:

 PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin:$PATH export PATH # needed for virtualenvwrapper export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh 

重新安装setuptools,轻松安装和PIP。 这显然是需要的,以便他们能够正确使用新的Python版本:

 sudo sh setuptools-0.6c11-py2.7.egg sudo easy_install-2.7 pip pip install virtualenv 

另外,如果你有/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin ,确保/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin列在/Library/Frameworks/Python.framework/Versions/2.7/bin/usr/local/bin在PATH中的/usr/local/bin 。 然后在你的.profile设置以下内容:

 export VIRTUALENVWRAPPER_PYTHON=`which python` export VIRTUALENVWRAPPER_VIRTUALENV=`which virtualenv` source `which virtualenvwrapper.sh` 

在我的情况下,将这一行添加到我的.zshrc文件中,

 export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/2.7.13/bin/python2.7 

这发生在我身上,我通过重新安装pip解决了它。 发生了什么事情是which pip给了/usr/bin/pip作为结果,而which python给了/usr/local/bin/pythonpip的path应该是/usr/local/bin/pip 。 当我更新我的Python安装时,这可能会破坏。

如果您遵循pip文档 ,则可以轻松地重新安装当前正在运行的Python安装程序的pip 。 你需要:

  1. 下载get-pip.py脚本(直接从pip的文档链接)。
  2. 运行python get-pip.py

这解决了我的问题。

有很多事情会导致这个错误。 如果你的环境是

  • CentOS 7,从epel-release安装python3
  • pip3安装的python3.4 get-pip.py
  • virtualenvwrapperpip3安装
  • mkvirtualenv -p /usr/bin/python3.4 python虚拟环境

然后,无论出于何种原因,虚拟环境都是在没有virtualenvwrapper库的情况下创build的。 你可以通过简单地安装它来解决它,但这次是从virtlualenv

 [user@localhost ~] $ mkvirtualenv -p /usr/bin/python3.4 venv Using base prefix '/usr' New python executable in /home/user/.virtualenvs/venv/bin/python3.4 Also creating executable in /home/user/.virtualenvs/venv/bin/python Installing setuptools, pip, wheel...done. virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/predeactivate virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/postdeactivate virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/preactivate virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/postactivate virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/get_env_details /home/user/.virtualenvs/venv/bin/python3.4: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportError'>: No module named 'virtualenvwrapper') /home/user/.virtualenvs/venv/bin/python3.4: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportError'>: No module named 'virtualenvwrapper') # the virtualenv should now activated (venv)[user@localhost ~] $ pip install virtualenvwrapper 

我只需要确保/ usr / local / bin / python存在。

对我来说这是一个简单的:

 ln -s /usr/local/bin/python2.7 /usr/local/bin/python 

我刚刚安装了python 3.5,尝试了virtualenvwrapper,然后有这个问题。 我意识到python3.5安装在/usr/local/bin/python3.5而不是/usr/bin/python3.5 。 所以,我修改了我的.bash_profile脚本,看起来像下面这样,现在一切似乎都奏效了

 # Setting PATH for Python 3.5 # The orginal version is saved in .bash_profile.pysave PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}" export PATH export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3.5 export WORKON_HOME=$HOME/.virtualenvs source /Users/bentaub/.virtualenvs/djangodev/bin/virtualenvwrapper.sh 

我已经足够了一个新手,不知道python3.5的“本地”将会如何影响我,但目前来看,它是行得通的。

卸载 virtualenvwrapper软件包后,我遇到了这个问题。 当我login到任何用户(或su到另一个),我会得到:

 Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named virtualenvwrapper.hook_loader virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenv has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is set properly. 

解决scheme是删除/etc/bash_completion.d/virtualenvwrapper文件。

编辑:

不要删除上面的文件,或者如果你重新安装virtualenvwrapper它不会被重新创build。 相反,你需要做的是purge virtualenvwrapper包当你卸载它。 就像在Debian上一样:

 apt-get remove --purge virtualenvwrapper 

我犯了同样的错误 。 发现我有旧版的点子。 我通过更新点子来修正错误。

尝试卸载你的virtualenvvirtualenvwrapper并在2.7版本(我认为)使用pip再次安装它。

我遇到了同样的错误,我只是这样做,解决了我的问题。

我使用U

即使有一个公认的答案,我想我会把它固定给我。

首先我安装了Python,并通过Homebrew升级了它。 我也使用ZSH所以如果有些位不完全匹配你的输出,那么这可能是为什么。

通过运行brew info python并查看输出,我发现了以下好的信息:

 If you wish to have this formula's python executable in your PATH then add the following to ~/.zshrc: export PATH="/usr/local/opt/python/libexec/bin:$PATH" 

所以我把这个添加到我的terminal启动脚本中,如图所示,并显示错误n。

注意:我把它插入到我的PATH的另一部分,错误在启动时一直存在。