安装了virtualenv和virtualenvwrapper:Python提示没有名为virtualenvwrapper的模块
关于类似问题的讨论很多,但我找不到和我的情况完全相同的。所以,我来分享一下我的情况:
我做了哪些事情:
- 运行了:
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 个回答
在我的情况下,把这一行添加到我的 .zshrc 文件里就解决了问题,
export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/2.7.13/bin/python2.7
记得要运行命令 source ~/.zshrc,这样才能把更改更新到你当前的终端里。
试着用 pip2 install virtualenv virtualenvwrapper
来安装 virtualenv 和 virtualenvwrapper。这看起来是因为 pip 默认会把 virtualenv 和它的工具安装到 Python 3 上。
如果你看看 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
这些内容在官方网站上都有详细说明,点击 这里 可以查看。
我在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。这次应该就能成功了。
我之前也遇到过你说的这个问题,后来我通过编辑我的~/.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