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

54 投票
10 回答
70979 浏览
提问于 2025-04-18 08:17

关于类似问题的讨论很多,但我找不到和我的情况完全相同的。所以,我来分享一下我的情况:

我做了哪些事情:

  • 运行了: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

如果能帮我解决这个问题,我将非常感激。

10 个回答

3

在我的情况下,把这一行添加到我的 .zshrc 文件里就解决了问题,

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

记得要运行命令 source ~/.zshrc,这样才能把更改更新到你当前的终端里。

7

试着用 pip2 install virtualenv virtualenvwrapper 来安装 virtualenv 和 virtualenvwrapper。这看起来是因为 pip 默认会把 virtualenv 和它的工具安装到 Python 3 上。

15

如果你看看 virtualenvwrapper.sh 这个脚本,你会发现里面有这些内容:

# Locate the global Python where virtualenvwrapper is installed.
if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] 
then
    VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi

如果你没有手动设置 VIRTUALENVWRAPPER 变量来匹配你所用的 Python 版本,它就会默认使用系统的设置,而这个设置里可能没有安装 virtualenvwrapper 这个包。

我这样解决了这个问题:

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

这些内容在官方网站上都有详细说明,点击 这里 可以查看。

41

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

我通过pip安装了virtualenv和virtualenvwrapper,这些模块被安装到了python3.5的库里。那我怎么知道的呢?

打开你的终端,输入

$ 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,而你可能是在另一个python的库里安装了virtualenv。

所以要解决这个问题,只需在你的bashrc文件中添加下面这一行

VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.5

注意:把上面的值设置为安装virtualenv时使用的python版本。在我的情况下是python3.5,所以我设置了这个值。要找出安装virtualenv时使用的python版本,再次在终端输入 pip --version

然后打开一个新的终端会话,再试一次mkvirtualenv。这次应该就能成功了。

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

撰写回答