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/python
。 pip
的path应该是/usr/local/bin/pip
。 当我更新我的Python安装时,这可能会破坏。
如果您遵循pip文档 ,则可以轻松地重新安装当前正在运行的Python安装程序的pip
。 你需要:
- 下载get-pip.py脚本(直接从
pip
的文档链接)。 - 运行
python get-pip.py
。
这解决了我的问题。
有很多事情会导致这个错误。 如果你的环境是
- CentOS 7,从
epel-release
安装python3
-
pip3
安装的python3.4 get-pip.py
-
virtualenvwrapper
与pip3
安装 - 用
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
我犯了同样的错误 。 发现我有旧版的点子。 我通过更新点子来修正错误。
尝试卸载你的virtualenv
和virtualenvwrapper
并在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的另一部分,错误在启动时一直存在。