问题
为什么 $ mkvirtualenv test
使用系统 python (v2.7.6) 而不是 brew-ed python (2.7.8) 以及如何配置 virtualenvwrapper 以使用所需的 python?
系统设置
我正在使用 OS X 10.9.5 和 Homebrew 软件安装的 python (v2.7.8)。我在系统范围内安装了 virtualenv 和 virtualenvwrapper。我的 shell 是通过 oh-my-zsh 使用 virtualenvwrapper 插件的 ZSH(尽管我已经尝试拉出插件并手动获取 virtualenvwrapper.sh,但我得到了相同的行为)。
演示
这个 2.7.8 是我从 shell 得到的 python 解释器
$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
$ which python
/usr/local/bin/python
$ python
Python 2.7.8 (default, Aug 24 2014, 21:26:19)
...
我在 .zshrc 的顶部设置了以下环境(在获取 virtualenvwrapper 之前)并将它们全部匹配到 $ printenv
的输出以确认他们设置正确
export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin"
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Projects/Python
# this is the location shown above to be v2.7.8
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
export PIP_DOWNLOAD_CACHE=$HOME/.pip/download_cache
export PIP_VIRTUALENV_BASE=$WORKON_HOME
尽管正确的 $PATH 和使用 python 解释器的显式覆盖我知道是 v2.7.8 任何 mkproject 获得默认系统 python:
$ mkvirtualenv test
....
(test)$ python
Python 2.7.6 (default, Mar 18 2014, 15:05:23)
...
解决方法
我发现了一个令人恼火的(因为它似乎应该改变什么)解决方法
$ mkvirtualenv -p `which python` test
...
(test)$ python
Python 2.7.8 (default, Aug 24 2014, 21:26:19)
...
那么为什么这些环境变量尽管已设置却没有被使用,而且它有明显的工作可能性,如解决方法所示?
最佳答案
默认情况下,virtualenv
将使用与它一起安装的 python 二进制文件,而不是首先出现在路径中的 python 二进制文件。
virtualenv --help
...
-p PYTHON_EXE, --python=PYTHON_EXE
The Python interpreter to use, e.g.,
--python=python2.5 will use the python2.5 interpreter
to create the new environment. The default is the
interpreter that virtualenv was installed with
(/usr/bin/python)
您最好的选择可能是卸载 virtualenvwrapper
,然后使用位于您 brew 的 Python 安装目录中的 pip 重新安装它。
关于python - 让 virtualenvwrapper 在 OS X 10.9 上使用 brew-ed python 而不是系统 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25964055/