make virtualenvwrapper在OS X 10.9上使用brew-ed python而不是system python

时间:2014-09-21 21:28:39

标签: python virtualenv homebrew virtualenvwrapper

问题

为什么$ mkvirtualenv test使用系统python(v2.7.6)而不是brew-ed python(2.7.8)?如何配置virtualenvwrapper以使用所需的python?

系统设置

我使用OS X 10.9.5和自制的python安装(v2.7.8)。我有一个系统范围的virtualenv和virtualenvwrapper安装。我的shell是zSH通过oh-my-zsh使用virtualenvwrapper插件(尽管我已经尝试拔出插件并手动获取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)
...

那么,为什么世界上这些环境变量虽然被设置并没有得到使用,并且它有明显的可能性,如工作所示?

1 个答案:

答案 0 :(得分:1)

默认情况下,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,然后将其重新安装到您自己酿造的Python安装目录中的pip中。