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


79

我正在运行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.7设置新的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.

我还在另一篇文章中发现我应该升级virtualenvwrapper。那没有帮助。

sudo pip install virtualenvwrapper --upgrade

任何帮助,将不胜感激。


4
您看到了 这一点还是可以尝试其他方式easy_install
敬请欣赏

谢谢,我看了这篇文章。但是我无法为python 2.7安装virtualenv。消息是virtualenv已经为2.6安装。我已经运行了以下命令:〜TK $其中python /Library/Frameworks/Python.framework/Versions/2.7/bin/python〜TK $ sudo pip install virtualenv已满足要求(使用--upgrade进行升级):virtualenv in /库/Python/2.6/site-packages/virtualenv-1.6-py2.6.egg清理...
Thomas Kremmel 2012年

我只是看了virtualenv的状态,它似乎不支持Py 2.7。
martineau'7

2
请注意-我在另一个案例中遇到了这个问题。我开始通过创建虚拟环境mkvirtualenv,然后停止了(使用Ctrl+C)。尝试再次制作virtualenv时,上次有一些剩余。我进入envs文件夹并删除了未完全构建的环境。在那之后,相同的mkvirtualenv命令正常工作。
2013年

2
Yang Yibo的评论在我的Ubuntu安装中也很受关注。请注意拼写...上面的内容应在VIRTUALENVWRAPPER中导出带有“ v”的VIRTUALENVWRAPPER_PYTHON = / usr / bin / python3
Kevin

Answers:


53

通过以下步骤解决了该问题:

#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

1
谢谢-在Mac Mountain Lion上升级Python 2.7安装程序后,我遇到了同样的问题,此问题已得到解决。
A. Jesse Jiryu Davis

3
在Mountain Lion上,我的诀窍是确保在源...行之前设置/ opt / local / bin的PATH。我不必弄乱/ usr / bin中的OSX Python链接或其他任何内容。如果未将WORKON_HOME设置为$ HOME / .virtualenvs,则默认为WORKON_HOME-2013
标记

4
+1表示@Mark评论。另外,对于Brew用户:实际路径为usr/local/Cellar/python/<PYTHON-VERSION>/bin/
rsenna

谢谢,在Debian中编译python 2.7.4之后,它对我有帮助。
祖鲁语

就我而言,问题仅是为什么我要尝试远程登录另一台计算机。提示,这意味着问题不在本地计算机上,而是在您登录的计算机上!以为我会提到它,以防万一有人在那个地方。
smileBot

23

另外,如果您具有macport,请确保在PATH/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin之前/Library/Frameworks/Python.framework/Versions/2.7/bin/usr/local/binPATH中列出了该端口。然后在您中设置以下内容.profile

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

4
我在我的操作系统python2旁边安装python3,设置VIRTUALENVWRAPPER_PYTHON解决了我的问题。
Johan Gov,2015年

8

就我而言,将这一行添加到我的.zshrc文件中就可以了,

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

3
export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/3.6.5/bin/python3.6以获取最新版本。
oba2311 '18

在我的bash_profile中,export VIRTUALENVWRAPPER_PYTHON="which python3"
Fai Zal Dong

7

对于使用Ubuntu 18.04Python 3+的任何人,这都帮了我大忙

which python3 # outputs /usr/bin/python3 
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3  
source `which virtualenvwrapper.sh`  

4

这发生在我身上,我通过重新安装解决了这个问题pip。什么有happend是which pip给了/usr/bin/pip结果,而which python放弃/usr/local/bin/python。的路径pip应为/usr/local/bin/pip。更新我的Python安装时,这可能会中断。

如果您遵循pip文档,则可以轻松地重新安装pip当前可用的Python设置。你需要:

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

这为我解决了问题。


3

有很多因素会导致此错误。如果您的环境是

  • CentOS 7,python3从以下位置安装epel-release
  • pip3 与安装 python3.4 get-pip.py
  • virtualenvwrapper 与安装 pip3
  • 用python制作的python虚拟环境 mkvirtualenv -p /usr/bin/python3.4

然后,无论出于何种原因,都会在没有virtualenvwrapper库的情况下创建虚拟环境。您只需重新安装即可解决此问题,但这一次是在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

2

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

对我来说,这很简单:

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

1

我犯了同样的错误 。发现我有旧版本的pip。我通过简单地升级pip来解决了该错误。


0

我刚安装了python 3.5,尝试了virtualenvwrapper,然后遇到了这个问题。我意识到python3.5已安装在/usr/local/bin/python3.5NOT中/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路径中的“本地”从长远来看会如何影响我,但是目前为止,它仍然有效。


0

我以后有这个问题卸载virtualenvwrapper包。当我登录到任何用户(或其他用户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.

解决的办法是删除/etc/bash_completion.d/virtualenvwrapper文件。

编辑:

不要删除上面的文件,否则如果重新安装将无法重新创建virtualenvwrapper。相反,您需要做的是purgevirtualenvwrapper卸载程序包时。在Debian上这样:

apt-get remove --purge virtualenvwrapper

0

尝试卸载您的virtualenvvirtualenvwrapper然后pip在2.7版中重新安装(我认为)。

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

我用U


0

即使有一个可以接受的答案,我也认为应该为我解决这个问题。

首先,我安装了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"

因此,如图所示,将其添加到了我的终端启动脚本中,错误n不再显示。

注意:我将此插入了PATH的另一部分,并且错误在启动时仍然存在。


0

安装Conda / Anaconda项目后遇到类似问题。这个问题对于解决我在MAC上的问题非常有帮助。解决问题使我的.zshrc相关部分看起来像这样:

export VIRTUALENVWRAPPER_PYTHON=$HOME/Applications/conda/bin/python
source $HOME/Applications/conda/bin/virtualenvwrapper.sh

这取决于我在哪里安装了conda,您必须自己确定情况。要获取特定环境的具体信息,具体取决于安装anaconda的位置,可以使用以下命令:

$  ~/ -name virtualenvwrapper.sh # to see where you have this. May already be prefilled in your shell profile[.zshrc or .profile]

$ which python   # to know the default python your project or rather where conda has installed python for you

不要忘了卸载和安装virtualenv和virtualenvwrapper,如其他答案中突出显示的那样。


0

刚刚在Centos 7.4上遇到了这个问题。

以上答案均不适合我的情况。经过一番挖掘之后,我将其定位为python libs中的文件权限太严格(我猜Centos上的python安装与其他POSIX系统有所不同)。

因此,如果其他所有操作都失败了,则可能要检查要与之一起运行virtualenvwrapper的用户是否可以读取python库。

特别要检查:( /usr/lib/python3.6 /usr/lib64/python3.6 修改不同python版本的路径)。

如果看到它group并且others在那里缺少读取和执行权限,请添加它们: sudo chmod og+rx -R /usr/lib/python3.6 sudo chmod og+rx -R /usr/lib64/python3.6

注意:我不确定这是否违反Centos的安全策略,但是只要您不发表write意见,它可能是安全的。


0

在我的情况下(OS X 10.13.6),做到了

brew install python2 --upgrade

0

我和这个人有同样的问题,花了很多时间来配置出什么问题了。我终于找到了问题所在。

首先,我查找了virtualenvwrapper文件夹所在的位置。在我的情况下/usr/local/lib/python3.7/site-packages。文件夹内是hook_loader.py,它导致了错误。

接下来,我使用了python脚本。

python3

import sys;print('\n'.join(sys.path))

我找不到/usr/local/lib/python3.7/site-packages目录,所以最后我写了,

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages

到.bashrc文件。做完了

PYTHON PATH的含义

如您在上面的链接中所见,PYTHONPATH扩展了模块的默认搜索路径。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.