安装了virtualenv和virtualenvwrapper:Python显示没有名为virtualenvwrapper的模块。

54

有很多关于类似问题的线程,但我没有找到与我的情况完全相同的。所以,让我们开始:

我所做的事情:

  • 运行:sudo easy_install pip
  • 运行:sudo pip install virtualenv
  • 运行:sudo pip install virtualenvwrapper

当前状态:

  • .bash_profile

    export PATH=/usr/local/bin:$PATH
    export PIP_DOWNLOAD_CACHE=$HOME/.pip/cache
    export WORKON_HOME=$HOME/.virtualenvs
    export PIP_VIRTUALENV_BASE=$WORKON_HOME
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    
  • 运行mkvirtualenv test会产生以下结果:

  • New python executable in trunk/bin/python
    Installing setuptools, pip...done.
    /usr/bin/python: No module named virtualenvwrapper
    
  • 手动检查 '/usr/local/bin' 发现 virtualenvwrapper.sh 存在

  • 与我看到的其他一些关于此问题的提问不同的是,在我启动新的终端窗口时,没有任何有关 virtualenvwrapper 的消息
  • 运行 'which python' 的结果为:/usr/bin/python

我尝试过的:

  • 检查我的路径,确保它看起来像是应该的
  • 重新安装 pip,然后使用重新安装的 pip 重新安装 virtualenv 和 virtualenvwrapper

非常感谢任何帮助让这个工作起来。


1
你的默认Python版本是什么?Pip会安装到当前默认版本(2.7、3.3)的Python中。如果你为Python 2.7安装一个软件包,你不能在Python 3.3中使用它。请确保/usr/bin/python目录是你默认的Python版本所在的位置。 - Elias
我曾经认为 'which python' 可以做到这一点并返回 /usr/bin/python。这不正确吗? - user3699754
10个回答

89

在遇到你所描述的问题后,我通过编辑我的~/.bash_profile并添加以下内容使其正常运行:

export WORKON_HOME=$HOME/code/.virtualenvs
export PROJECT_HOME=$HOME/code
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'

source /usr/local/bin/virtualenvwrapper.sh

保存,关闭。

然后:

$ source ~/.bash_profile

和:

$ mkvirtualenv test

14
在MacOS上,/usr/local/bin/python是通过brew安装的。/usr/bin/python是系统自带的。使用virtualenvwrapper更容易使用来自brew的Python,所以这里重要的部分是export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python。如果你喜欢,也可以使用brew安装python3并使用/usr/local/bin/python3代替原来的Python。 - GabLeRoux
@GabLeRoux,感谢您在评论中提供的简洁回答。 - KeitelDOG

41

我在Ubuntu上设置virtualenvwrapper时遇到了同样的问题。

我使用pip安装了virtualenv和virtualenvwrapper,这些模块被安装在python3.5的site package中。我是如何发现这一点的呢?

打开终端并输入以下命令:

$ pip --version

pip 9.0.1 来自 /home/clyton/.virtualenvs/test1/lib/python3.5/site-packages (python 3.5)

然后我检查了变量 VIRTUALENVWRAPPER_PYTHON 的值为 /usr/bin/python。 在你的终端上输入

$ ls -l $VIRTUALENVWRAPPER_PYTHON

lrwxrwxrwx 1 root root 9 Dec 10  2015 **/usr/bin/python -> python2.7**

如您所见,此变量指向Python2.7,并且您可能已经将Virtualenv安装在其他Python站点包中。

因此,要解决此问题,请在您的bashrc文件中添加以下行:

VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.5

注意:将上述值设置为安装virtualenv的python版本。在我的情况下,它是python3.5,所以我已经设置了该值。如何找出用于安装virtualenv的python版本?再次在终端中键入pip --version

然后打开一个新的shell会话,再次尝试mkvirtualenv。这次应该可以正常工作。


15
如果您查看virtualenvwrapper.sh脚本,您会发现以下这些行:
# Locate the global Python where virtualenvwrapper is installed.
if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] 
then
    VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi

如果您没有针对自己的python版本手动导出VIRTUALENVWRAPPER,它将假定系统默认设置,即您未安装virtualenvwrapper软件包。

我是这样修复的:

echo "export VIRTUALENVWRAPPER_PYTHON=$(which python3.6)" >> ~/.zshrc

这一切都在官网这里有详细记录。


7
尝试使用 pip2 install virtualenv virtualenvwrapper 安装 virtualenv 和 virtualenvwrapper。似乎 pip 默认会将其安装到 Python 3 中。

1
我使用了这个解决方案,不需要我去修改~/.bash_profile就修复了我的问题。 - John Pang

3
最近(2017年夏季)更新Homebrew和python后,我遇到了这个错误。在我的情况下,问题是Homebrew不再覆盖系统python,并且我没有为系统python安装virtualenv和virtualenvwrapper。
解决方法是将以下内容添加到~/.bash_profile(或~/.zshrc)中:
export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"
这使得python指向brew版本的python,并且还让我重新获得了pip。这个版本的python已经安装了virtualenv和virtualenvwrapper,所以错误不再出现。有关更多信息,请参见“brew info python”下的警告部分和https://github.com/Homebrew/homebrew-core/issues/15746

3
在我的情况下,将此行添加到我的.zshrc文件中就可以解决问题了,
export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/2.7.13/bin/python2.7

记得执行 source ~/.zshrc 命令,以更新更改到当前终端。

同样的问题,不明白为什么,只是厌倦了浪费时间。使用/usr/local/Cellar/python/2.7.14_2/bin/python2.7解决了问题,谢谢。 - Vadorequest
在我的情况下,问题是它使用的是没有安装virtualenvwrapper的python2。编辑virtualenvwrapper.sh并像这样更改路径即可解决:VIRTUALENVWRAPPER_PYTHON="$(command \which python3)" - Ran Halprin

2
尝试卸载您的virtualenvvirtualenvwrapper,然后再次使用pip安装它(检查是否将pip符号链接或为其他版本分配了别名),版本为2.7(我想)。

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

我使用的是Ubuntu机器。

希望这可以帮助您。


0

我不知道这是否与任何人有关,但在虚拟环境处于活动状态时编辑~/.zshrc时,我遇到了此错误。因此,我必须deactivate,然后rmvirtualenv env_name以消除错误。然后我重新创建了环境:mkvirtaulenv env_nameworkon env_name,这次没有出现错误。

希望对某些人有所帮助。


0
在Ubuntu 20.xx中,只能通过指定Python可执行文件路径来创建虚拟环境。
$ which python3
/usr/bin/python3
$ mkvirtualenv --python=/usr/bin/python <name_of_your_virtual_env>

0

我知道这个帖子已经很老了,但是在尝试找到解决这个问题的方法时,我卡在了这个帖子上(使用 pip3,但您可以根据需要切换为 pip)。
最终,我使用了另一篇帖子中找到的一个修改过的解决方案 here
将以下内容添加到您的 .zshrc/.bashrc 文件中:

source /usr/local/bin/virtualenvwrapper.sh
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3

以上代码中我必须添加local,但是是否需要这样做取决于您的安装情况。我意识到我引用了错误的位置,因为我遇到了这个错误:zsh: no such file or directory: /usr/bin/python3,所以我只需运行which python3查看它的位置。
请确保卸载任何现有版本的virtualenvvirtualenvwrapper,因为您不能简单地在计算机上已经存在的版本上安装到新位置,您必须删除旧版本,然后在新位置安装新版本。
安装命令如下:
sudo /usr/local/bin/pip3 install virtualenv virtualenvwrapper 根据this文章,您应该能够使用以下命令创建一个带有您的python3版本的虚拟环境:
mkvirtualenv --python=`which python3` nameOfEnvironment

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接