【问题标题】:/usr/bin/python3: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportError'>: No module named 'virtualenvwrapper')/usr/bin/python3:查找“virtualenvwrapper.hook_loader”规范时出错(<class 'ImportError'>:没有名为“virtualenvwrapper”的模块)
【发布时间】:2016-01-17 22:24:31
【问题描述】:

我正在尝试关注How To Serve Django Applications with uWSGI and Nginx on Ubuntu 14.04,但由于输出量大,我在早期阶段失败了,我将所有相关信息放入Pastebin.com - #1 paste tool since 2002!

实际错误:

root@alexus:~# echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
root@alexus:~# source ~/.bashrc
/usr/bin/python3: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportError'>: No module named 'virtualenvwrapper')
virtualenvwrapper.sh: There was a problem running the initialization hooks.

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 and that PATH is
set properly.
root@alexus:~#

我正在学习如何使用牙齿,我做错了什么?

【问题讨论】:

  • 你试过pip install virtualenvwrapper --upgrade 吗?如果这不起作用,请关注此 SO 线程:stackoverflow.com/questions/11507186/…
  • @Alexander 我刚刚安装了python-pipvirtualenvvirtualenvwrapper。我还需要运行升级吗?我正在全新安装。
  • 安装完以上所有内容后,只需运行sudo apt-get update,然后运行virtualenv myproject。请确保您的pip 版本与您的python 版本兼容
  • 顺便说一句,我从未安装过virtualenvwrapper,我每天都在使用uwsginginx。我不建议安装它,除非你必须使用它。
  • @Alexander 我的系统是最新的。实际上,我可以通过将VIRTUALENVWRAPPER_PYTHONpython3 切换到python 来让它工作。我的django 应用程序需要virtualenvwrapper uwsgi

标签: python virtualenv virtualenvwrapper


【解决方案1】:

我在 brew 升级后收到此警告,更新了 python3 包和 brew-installed python3。

我发现 pip3 和 python3 版本不匹配as Evan Thomas hinted:

❯ which python3 && python3 --version
/usr/bin/python3
Python 3.8.2

❯ which pip3 && pip3 --version
/usr/local/bin/pip3
pip 21.0.1 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

运行 brew link python@3.9 as snakesNbronies suggested 会删除警告。

【讨论】:

    【解决方案2】:

    如果您是在 macOS 更新后来到这里,并通过 brew 安装了 python3,请尝试重新链接您的 python3 版本

    • brew link python@3.8
    • brew link python@3.9

    【讨论】:

      【解决方案3】:

      尝试安装python-is-python3:

      1.更新包索引:

      sudo apt-get update
      

      2.安装python-is-python3 deb包:

      sudo apt-get install python-is-python3
      

      【讨论】:

        【解决方案4】:

        这就是我解决的问题

        Error while finding module specification for 'virtualenvwrapper.hook_loader' (ModuleNotFoundError: No module named 'virtualenvwrapper')
        

        在创建和激活环境中获得。

        在我的.bashrc 中我曾写道:

        export VIRTUALENVWRAPPER_PYTHON=python3

        改成:

        export VIRTUALENVWRAPPER_PYTHON=$(which python3)

        为我解决了问题。

        注意:如果你激活一个环境并运行which python3,你会发现python运行是环境之一,而不是VIRTUALENVWRAPPER_PYTHON中指定的全局环境

        【讨论】:

        • 在 Ubuntu 20.04 上同样的问题,这解决了它。作为一个经验法则:放置你的 python 解释器的完整路径,而不是相对的,因为它在 virtualenv 启动时会改变。
        • 希望我能投票两次。我试过了。许多。其他。此建议的版本。这是唯一有效的。
        【解决方案5】:

        在我安装 vimmacvim 后,我在 Mac OS Catalina 10.15.6 上遇到了类似的问题 使用以下:

        brew install vim &amp;&amp; brew install macvim

        我认为这是问题的原因。

        虽然workon 工作但总是给出如下错误消息:

         ~ $ workon loom
        /Library/Frameworks/Python.framework/Versions/3.6/bin/python3: Error while finding module specification for 'virtualenvwrapper.hook_loader' (ModuleNotFoundError: No module named 'virtualenvwrapper')
        /Library/Frameworks/Python.framework/Versions/3.6/bin/python3: Error while finding module specification for 'virtualenvwrapper.hook_loader' (ModuleNotFoundError: No module named 'virtualenvwrapper')
        (loom)  ~ $ 
        

        最终对我有用的是:

        1. export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 添加到.bash_profile
        2. sudo pip3 install virtualenvwrapper

        【讨论】:

          【解决方案6】:

          感谢@Alexander,我能够通过更改~/.bashrc 中的行来解决我的问题:

          export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
          

          export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
          

          由于向后兼容性。

          【讨论】:

          • 这对我有用,但就我而言,我需要将其更改为 /usr/bin/python3.6。它需要与您使用的任何版本相匹配。
          • 在使用 sudo pip install virtualenv virtualenvwrapper 而不是 sudo pip3 install virtualenv virtualenvwrapper 后工作
          • ~/.bashrc这行需要改一下吧?也许为像我这样的菜鸟加上这个
          • I ls /usr/bin/python 它链接到“python2”。但是我的系统是ubuntu 20,我以为那里不存在python 2
          • 就我而言,我尝试使用 pyenv + virtualenvwrapper(不是独立的,而是 pyenv 插件)。所以我改变了 python -> python3 (与你的答案相反)。否则插件无法识别。另一种可能性是为 python2 做:apt install python-pip, pip install virtualenvwrapper(即标准 virtualenvwrapper,而不是 pyenv wrapper)。
          【解决方案7】:

          由于完全不同的原因,我遇到了这个错误,但自从我结束了这个线程,我想有人可能会觉得这很有用。因此,就我而言,事实证明我的脚本正试图激活虚拟环境,而我已经在它上面(workon 语句是从我的.profile 文件发出的)。所以解决方案是先简单地deactivate 环境,然后运行脚本。

          【讨论】:

          • 非常感谢,天哪,我从来没想过
          【解决方案8】:

          在我的电脑上,我运行sudo apt install python-pip,然后运行pip install virtualenvwrapper,但在我的设置中,我设置如下:

          export WORKON_HOME=$HOME/.Envs
          export VIRTUALENVWRAPPER_PYTHON=$(which -a python3)
          source $HOME/.local/bin/virtualenvwrapper.sh
          

          这消除了错误并注意我使用的是 python3 并且我使用 pip3 作为我的默认值

          【讨论】:

            【解决方案9】:

            就我而言,pip3 和 python3 之间存在某种不匹配(因为我安装了多个 python)。这对我有用:

            sudo python -m pip install virtualenvwrapper
            

            【讨论】:

              【解决方案10】:

              我在使用带有 virtualenvwrapper 的 python3 时遇到了类似的问题,

              sudo apt-get install python3-pip
              

              然后从 pip3 安装 virtualenv 和 virtualenvwrapper,

              sudo pip3 install virtualenv virtualenvwrapper
              

              然后再次获取它,

              source $HOME/.bashrc 
              

              【讨论】:

              • 这种方法在 OSX Mojave 上也适用于我。使用sudo pip3 install virtualenv virtualenvwrapper
              • 我需要使用 python3 来实现一些 LDAP 功能,所以这可能是我的最佳选择。我最初使用了@alexus 提出的解决方案,该解决方案有效,但我不确定偏离 python3 特定设置是否会导致问题。
              【解决方案11】:

              我已经安装了 virtualenv,所以只需要运行

              pip3 install virtualenvwrapper
              

              【讨论】:

                【解决方案12】:

                在 mac os high sierra 上运行 brew updatebrew upgrade 后出现此错误。

                问题已通过重新安装 virtualenvwrappper 得到解决,即pip install virtualenvwrapper

                【讨论】:

                  【解决方案13】:

                  在 macOS Sierra 中, 如果您使用pip3 安装了virtualenv 软件包, 添加关注.bash_profile

                  export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
                  

                  export VIRTUALENVWRAPPER_PYTHON=$(which python3)
                  

                  之后,您使用 workon myvenv 创建的每个新虚拟环境 使用python3作为python解释器

                  【讨论】:

                  • export VIRTUALENVWRAPPER_PYTHON=$(which python3) 为我工作
                  • export VIRTUALENVWRAPPER_PYTHON=$(which python3) 也为我工作。我认为发生这种情况是因为我有两个版本的 python(默认 2.7 和 3)。使用此命令,它会根据 virtualenv 选择正确的。
                  【解决方案14】:

                  检查您的python3 安装目录:

                  which python3

                  如果由 brew 安装,您应该得到:

                  /usr/local/python3

                  导出要使用 virtualenvwrapper 的 python 版本:

                  export VIRTUALENVWRAPPER_PYTHON=/usr/local/python3

                  获取您的 shell 配置文件:
                  bash

                  source .bashrc

                  zsh

                  source .zshrc

                  【讨论】:

                  • 这个帮助了我:我的导出 VIRTUALENVWRAPPER_PYTHON 设置为 python3。将其更改为/usr/bin/python3解决了问题
                  【解决方案15】:

                  我遇到了类似的问题,virtualenvwrapper 抱怨找不到 virtualenvwrapper.hook_loader。我能够在我的.bash_profile中缩小到这一特定行@

                  source /usr/local/bin/virtualenvwrapper.sh

                  如下所示

                  $ source /usr/local/bin/virtualenvwrapper.sh
                  /usr/local/opt/python3/bin/python3.6: Error while finding module specification for 'virtualenvwrapper.hook_loader' (ModuleNotFoundError: No module named 'virtualenvwrapper')
                  virtualenvwrapper.sh: There was a problem running the initialization hooks. 
                  
                  If Python could not import the module virtualenvwrapper.hook_loader,
                  check that virtualenvwrapper has been installed for
                  VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 and that PATH is
                  set properly.
                  

                  经过反复试验,结果证明重新安装 virtualenvwrapper 软件包解决了这个问题。这表明我最近通过自制软件升级了 python3(从版本 3.5.2 到 3.6.1),然后它破坏了 virtualenvwrapper 的 shell 脚本,该脚本硬编码了对旧版本 python3 的引用(在我的例子中是 3.5. 2)。简而言之,下面这行应该可以解决它(至少在我的情况下是这样)。

                  pip3 install virtualenvwrapper
                  

                  【讨论】:

                  • 另外我注意到 homebrew 或其他一些安装的软件包在过去的某个时候吹走了/usr/local/bin/python3 的符号链接,所以以某种方式通过 homebrew 重新酿造 python3 以恢复 /usr/local/bin/python3 也使它再次工作。
                  • 这为我修好了!谢谢!
                  • @Devy 你可以用brew link python@3.8恢复/usr/local/bin/python3的符号链接
                  【解决方案16】:

                  导出 VIRTUALENVWRAPPER_PYTHON=/usr/bin/python

                  不错的选择,但您已经知道 /usr/bin/python 是 2.7

                  如果你想使用版本 3

                  sudo apt-get install python3-pip

                  注销并登录

                  【讨论】:

                    猜你喜欢
                    • 2021-11-09
                    • 2020-06-13
                    • 2013-11-04
                    • 1970-01-01
                    • 2021-01-11
                    • 2020-09-07
                    • 1970-01-01
                    • 2011-05-18
                    • 2018-01-20
                    相关资源
                    最近更新 更多