Python的VIRTUALENV - 无模块命名virtualenvwrapper.hook_l

2019-06-26 07:53发布

我在运行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

任何帮助,将不胜感激。

Answer 1:

这个问题解决了遵循以下步骤:

#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


Answer 2:

另外,如果你有使用MacPorts,确保/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin在上市前/Library/Frameworks/Python.framework/Versions/2.7/bin/usr/local/bin在PATH。 然后设置按照你.profile

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


Answer 3:

在我的情况下,加入这一行到我的.zshrc文件的伎俩,

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


Answer 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

这解决了这个问题对我来说。



Answer 5:

有一些事情,可能会导致这个错误。 如果您的环境

  • CentOS的7,与python3从安装epel-release
  • pip3安装python3.4 get-pip.py
  • virtualenvwrapper安装了pip3
  • 与由蟒蛇虚拟环境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


Answer 6:

我刚要确保在/ usr / local / bin目录/ Python的存在。

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

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


Answer 7:

对于使用Ubuntu 18.04Python 3+任何人,这并获得成功对我来说:

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


Answer 8:

我犯了同样的错误 。 发现我有旧版本PIP的。 我通过简单的升级PIP固定的错误。



Answer 9:

我刚装蟒蛇3.5,试过virtualenvwrapper再有这个问题。 我才明白python3.5安装在/usr/local/bin/python3.5和NOT /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是“本地”是怎么回事影响到我,从长远来看,但是,现在,它的工作原理。



Answer 10:

卸载后有这个问题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


Answer 11:

尝试卸载你virtualenvvirtualenvwrapper和使用重新安装pip在2.7版本(我认为)。

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

我采用U



Answer 12:

即使有,我想我会放什么固定它,我一个公认的答案。

首先,我安装了Python和刚刚通过自制升级它。 我也使用ZSH因此,如果某些位不完全匹配您的输出,那么这可能是为什么。

通过运行BREW信息蟒蛇 ,并通过输出看,我发现下面的信息不错位:

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"

所以我说这对我的终端启动脚本所显示和错误Ñ不再显示。

注:我插入到这一点我路上的另一部分并开始了持续的错误。



Answer 13:

跑进安装康达/蟒项目后,类似的问题。 这个问题是在解决MAC.Resolving问题有我我的问题非常有帮助的.zshrc相关的部分看起来像这样:

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

这取决于在那里我有安装畅达,你就必须弄清楚,在你自己的情况。 要获取具体为你的特定环境,具体取决于您已经安装了蟒蛇,你可以使用以下命令:

$  ~/ -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

不要忘了卸载,在其他的答案突出INSTALL的virtualenv和virtualenvwrapper。



Answer 14:

只是碰到了这个问题上一个CentOS 7.4。

以上答案都不适合我的情况。 相当多的周围挖后,我精确定位这个在Python库(我猜在CentOS的Python安装不同于其他POSIX系统中位)过于严格的文件权限。

所以,如果一切都失败了,你可能要检查你的Python库是由您尝试与运行virtualenvwrapper用户可读。

尤其是检查: /usr/lib/python3.6 /usr/lib64/python3.6 (修订不同Python版本的路径)。

如果你看到groupothers缺乏阅读,并在那里执行权限,然后将它们添加: sudo chmod og+rx -R /usr/lib/python3.6 sudo chmod og+rx -R /usr/lib64/python3.6

注:我不知道这是否对工作CentOS的安全策略,但它可能是安全的,只要你不放弃write persmisions。



Answer 15:

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

brew install python2 --upgrade


文章来源: Python Virtualenv - No module named virtualenvwrapper.hook_loader