我正在运行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
任何帮助都将不胜感激。
答案 0 :(得分:51)
该问题已按照以下步骤解决:
#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 :(得分:22)
此外,如果您有macport,请确保在/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin
之前列出/Library/Frameworks/Python.framework/Versions/2.7/bin
,在PATH中列出/usr/local/bin
。然后在.profile
中设置以下内容:
export VIRTUALENVWRAPPER_PYTHON=`which python`
export VIRTUALENVWRAPPER_VIRTUALENV=`which virtualenv`
source `which virtualenvwrapper.sh`
答案 2 :(得分:7)
在我的情况下,将此行添加到我的.zshrc文件中就可以了,
export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/2.7.13/bin/python2.7
答案 3 :(得分:4)
这件事发生在我身上,我通过重新安装pip
解决了这个问题。结果是which pip
给了/usr/bin/pip
,而which python
给了/usr/local/bin/python
。 pip
的路径应为/usr/local/bin/pip
。当我更新我的Python安装时,这可能会破坏。
如果您follow the pip documentation,您可以轻松地为当前正在运行的Python设置重新安装pip
。你需要:
pip
的文档链接)。python get-pip.py
。这解决了我的问题。
答案 4 :(得分:3)
有很多事情可能会导致此错误。如果你的环境是
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
答案 5 :(得分:2)
我必须确保/ usr / local / bin / python存在。
对我来说这很简单:
ln -s /usr/local/bin/python2.7 /usr/local/bin/python
答案 6 :(得分:2)
对于使用 Ubuntu 18.04 和 Python 3 + 的任何人,这都对我有用:
which python3 # outputs /usr/bin/python3
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source `which virtualenvwrapper.sh`
答案 7 :(得分:1)
我得到了同样的错误。发现我有旧版的点子。我只是通过升级点来修复错误。
答案 8 :(得分:0)
我刚刚安装了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路径中的'local'会如何影响我从长远来看,但是现在它可以工作。
答案 9 :(得分: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
时将无法重新创建。相反,卸载它时,您需要purge
virtualenvwrapper
包。像Debian一样:
apt-get remove --purge virtualenvwrapper
答案 10 :(得分:0)
尝试卸载{
"size": 1000,
"min_score": 1,
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "MY_DATA_TYPE",
"fields": [
"doc.db_doc_type"
]
}
},
{
"query_string": {
"query": "MY_SPECIFIC_TYPE",
"fields": [
"doc.db_doc_specific"
]
}
}
],
"should": {
"match": {
"doc.such": {
"query": "F-G/4"
}
}
}
}
}
}
和virtualenv
并使用版本2.7中的virtualenvwrapper
重新安装(我认为)。
我遇到了同样的错误,我刚刚做了这个并解决了我的问题。
我使用U
答案 11 :(得分:0)
即使有一个已接受的答案,我认为我会为我修复它。
首先我安装了Python,并通过Homebrew 升级了。我也在使用ZSH,所以如果某些位与输出不匹配,那么这可能是原因。
通过运行 brew info python 并查看输出,我发现了以下一些信息:
dependencies {
compile 'com.android.support:design:+'
compile 'com.android.support:appcompat-v7:+'
compile 'com.android.volley:volley:+'
compile fileTree(dir: 'libs', include: ['*.jar'])
}
所以我将此添加到我的终端启动脚本中,如图所示,错误n显示更长。
注意:我将其插入到PATH的另一部分中,并且启动时错误仍然存在。
答案 12 :(得分: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,如其他答案所示。
答案 13 :(得分:0)
刚刚在Centos 7.4上碰到了这个问题。
上述答案都不适合我的情况。经过相当多的挖掘后,我在python库中确定了过于严格的文件权限(我猜Centos上的python安装与其他POSIX系统略有不同)。
因此,如果其他一切都失败了,您可能需要检查您的python库是否是您尝试运行virtualenvwrapper的用户可读的。
特别检查:
/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
个问题,它就可能是安全的。
答案 14 :(得分:0)
在我的情况下(OS X 10.13.6),做到了
brew install python2 --upgrade
答案 15 :(得分: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文件。完成。
如您在上面的链接中所见,PYTHONPATH扩展了模块的默认搜索路径。