【问题标题】:Python Virtualenv - No module named virtualenvwrapper.hook_loaderPython Virtualenv - 没有名为 virtualenvwrapper.hook_loader 的模块
【发布时间】:2012-07-15 11:17:36
【问题描述】:

我运行的是 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

任何帮助将不胜感激。

【问题讨论】:

  • 你看到this 或者你可以尝试其他方式easy_install
  • 谢谢我看了帖子。但我无法为 python 2.7 安装 virtualenv。消息是已经为 2.6 安装了 virtualenv。我已经运行了以下命令: ~ TK$ which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python ~ TK$ sudo pip install virtualenv 要求已经满足(使用 --upgrade 升级): virtualenv in / Library/Python/2.6/site-packages/virtualenv-1.6-py2.6.egg 清理...
  • 我只是看了一个 virtualenv 的 status,它看起来并不支持 Py 2.7。
  • 请注意 - 我在不同的情况下遇到了这个问题。我开始通过mkvirtualenv 创建一个virtualenv,然后停止它(使用Ctrl+C)。在尝试再次制作 virtualenv 时,有一些上次的剩菜。我进入我的 envs 文件夹并删除了未完全构建的环境。之后,同样的mkvirtualenv 命令正常工作。
  • Yibo Yang 的评论也适用于我的 Ubuntu 安装。请注意拼写...上面应该是 export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 与 VIRTUALENVWRAPPER 中的“v”

标签: python virtualenv virtualenvwrapper


【解决方案1】:

我遇到了与这个问题相同的问题,并且花了很多时间来配置问题所在。我终于发现了问题所在。

首先我寻找 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 文件。完成。

Meaning of PYTHON PATH

正如您在上面的链接中看到的,PYTHONPATH 增加了模块的默认搜索路径。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      brew install python2 --upgrade
      

      【讨论】:

        【解决方案4】:

        刚刚在 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 权限,它可能是安全的。

        【讨论】:

          【解决方案5】:

          安装 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,如其他答案中突出显示的那样。

          【讨论】:

            【解决方案6】:

            我得到同样的错误。发现我有旧版本的 pip 。我通过简单地升级 pip 来修复错误。

            【讨论】:

              【解决方案7】:

              即使有一个可以接受的答案,我还是想我会为我解决这个问题。

              首先我安装了 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 的另一部分,并且错误在启动时仍然存在。

              【讨论】:

                【解决方案8】:

                问题已通过以下步骤解决:

                #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
                

                【讨论】:

                • 谢谢 - 在 Mac Mountain Lion 上升级我的 Python 2.7 安装后,我遇到了同样的问题,这解决了它。
                • 在 Mountain Lion 上,对我来说,诀窍是确保 /opt/local/bin 的 PATH 设置在 source ... 行之前。我不必弄乱 /usr/bin 或其他任何东西中的 OSX Python 链接。如果 WORKON_HOME 未设置为 $HOME/.virtualenvs,现在也默认为
                • +1 @Mark 评论。此外,对于 brew 用户:实际路径是 usr/local/Cellar/python/<PYTHON-VERSION>/bin/
                • 谢谢,在 Debian 中自己编译 python 2.7.4 后对我有帮助。
                • 就我而言,问题仅发生在我尝试远程登录另一台机器的原因。提示,这意味着问题不在本地机器上,而是在你登录的机器上!以为我会提到它,以防有人在那个地方。
                【解决方案9】:

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

                对我来说很简单:

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

                【讨论】:

                  【解决方案10】:

                  在我的例子中,将这一行添加到我的 .zshrc 文件中就可以了,

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

                  【讨论】:

                  • export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/3.6.5/bin/python3.6 获取最新版本。
                  • 在我的 bash_profile 中,export VIRTUALENVWRAPPER_PYTHON="which python3"
                  • @FaiZalDong 我不得不稍微修改我的 Deb 11 配置文件中的命令以使用反引号而不是引号:export VIRTUALENVWRAPPER_PYTHON=`which python3`
                  【解决方案11】:

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

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

                  我用 U

                  【讨论】:

                    【解决方案12】:

                    我在卸载 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
                    

                    【讨论】:

                      【解决方案13】:

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

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

                      然后,无论出于何种原因,在没有 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
                      

                      【讨论】:

                        【解决方案14】:

                        我刚刚安装了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 路径中的“本地”会如何影响我,但现在,它可以工作。

                        【讨论】:

                          【解决方案15】:

                          这发生在我身上,我通过重新安装 pip 解决了它。结果是which pip 给了/usr/bin/pip,而which python 给了/usr/local/bin/pythonpip 的路径应该是 /usr/local/bin/pip。当我更新我的 Python 安装时,这可能会中断。

                          如果您是follow the pip documentation,您可以轻松地重新安装pip 以用于您当前工作的 Python 设置。您需要:

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

                          这解决了我的问题。

                          【讨论】:

                            【解决方案16】:

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

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

                            【讨论】:

                            • 我在我的操作系统 python2 旁边安装 python3 并设置 VIRTUALENVWRAPPER_PYTHON 解决了我的问题。
                            猜你喜欢
                            • 1970-01-01
                            • 2016-06-17
                            • 2018-11-24
                            • 2014-01-30
                            • 2014-01-16
                            • 2018-07-15
                            • 1970-01-01
                            • 1970-01-01
                            • 2022-01-20
                            相关资源
                            最近更新 更多