Накарайте virtualenvwrapper да използва brew-ed python вместо системен python на OS X 10.9

Въпрос

Защо $ mkvirtualenv test използва системния питон (v2.7.6) вместо готовия питон (2.7.8) и как да конфигурирам virtualenvwrapper да използва желания питон?

Системни настройки

Използвам OS X 10.9.5 с homebrew инсталация на python (v2.7.8). Имам системна инсталация на virtualenv и virtualenvwrapper. Моята обвивка е ZSH чрез oh-my-zsh, използвайки плъгина virtualenvwrapper (въпреки че се опитах да изтегля плъгина и да избера virtualenvwrapper.sh ръчно и получавам същото поведение).

Демонстрация

Този 2.7.8 е интерпретаторът на 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)
...

Така че защо в света тези променливи на средата не се използват, въпреки че са зададени и има ясна възможност да работят, както е показано в работата??


person Finn    schedule 21.09.2014    source източник
comment
Как инсталирахте самия virtualenv? В моята система скриптът virtualenv има като shebang /usr/bin/python, което може да обясни проблема ви. Може би опитайте да премахнете това и да го инсталирате отново чрез brew?   -  person Daniel Roseman    schedule 22.09.2014
comment
@DanielRoseman Изглежда, че това може да е било. Всички тези различни варианти на околната среда просто плацебо ли са?   -  person Finn    schedule 23.09.2014


Отговори (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 и след това да го инсталирате отново с pip, който се намира в инсталационната директория на вашия Python.

person vgel    schedule 21.09.2014
comment
помощта на virtualenvwrapper показва интерпретатора 2.7.8 - person Finn; 23.09.2014