【问题标题】:Make virtualenvwrapper use brew-ed python instead of system python on OS X 10.9使 virtualenvwrapper 在 OS X 10.9 上使用 brew-ed python 而不是系统 python
【发布时间】:2014-11-15 19:51:28
【问题描述】:

问题

为什么$ 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 是使用 virtualenvwrapper 插件通过 oh-my-zsh 实现的 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 本身的?在我的系统上,virtualenv 脚本的 shebang /usr/bin/python,这可能解释了您的问题。也许尝试删除它并通过 brew 重新安装它?
  • @DanielRoseman 看起来可能就是这样。所有这些不同的环境变量都只是安慰剂吗?

标签: python virtualenv homebrew virtualenvwrapper


【解决方案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 重新安装它。

【讨论】:

  • virtualenvwrapper的帮助显示2.7.8解释器
猜你喜欢
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多