2013-02-10 2 views
0

Моя основная системная версия python - 2.7.3. Я пытаюсь создать virtualenv, который использует версию 3.3.0. Я установил pythonbrew, virtualenv и virtualenvwrapper.Управление версией python в разных virtualenv с помощью pythonbrew

Я после этого учебника: http://technomilk.wordpress.com/2011/07/27/setting-up-our-django-site-environment-with-pythonbrew-and-virtualenv/

, который по существу проходит pythonbrew use 3.3.0, а затем создать virtualenv. В учебнике говорится, что virtualenv будет использовать версию pythonbrew. Но это не так. Virtualenv использует 2.7.3, когда я его запускаю. Когда я делаю pythonbrew use 3.3.0, он выходит из virtualenv, и он применяется к системе вместо среды.

Видимо, pythonbrew имеет свою собственную virtualenv оболочку, которая имеет учебник по адресу: http://suvashthapaliya.com/blog/2012/01/sandboxed-python-virtual-environments/

Я ненавижу делать это так же. Можно ли использовать virtualenvwrapper вместе с pythonbrew (а не венской упаковкой pythonbrew), чтобы иметь возможность выбирать, какую версию python использовать для каждого venv, и сохранять их отдельно от системной версии python?

Кроме того, я не хочу использовать флаг mkvirtualenv -p, так как это означает, что мне нужно вручную установить python3.3. Я бы предпочел использовать диспетчер пакетов для управления версиями python. Трудно поверить, что ничто в питоне не соответствует RVM в рубине ... Если я не ошибаюсь?

ответ

1

Возможно, вам стоит посмотреть http://pypi.python.org/pypi/pythonbrew/. Когда я сделал это, я использовал pythonbrew создать venv

pythonbrew install 2.7.3 
pythonbrew switch 2.7.3 
pythonbrew venv create proj 

работал как чемпион.

Я занялся созданием своих виртуальных сред в папке под моим git-репо, чтобы я мог избавиться от виртуальной среды, не путаясь с моим кодом и перестраивая его, если захочу. Я столкнулся с этой техникой во время работы с jenkins, который делает клон git для вас, тогда вам нужно выяснить, как создать виртуальную среду вокруг него.

Python/proj 
    .proj   <---- Virtual environment is in here! 
     lib 
     site-packages 
    settings 
    requirements 
    apps 

У меня также есть функция bash, которая работает для меня.

function workon() { 
    if [ -d ~/Python/$1 ] 
    then 
      cd ~/Python/$1 
      if [ -d .$1 ] 
      then 
       . .${1}/bin/activate 
      else 
       . bin/activate 
       cd $1 
      fi 
    fi 
} 

Это один слишком сложен, чтобы иметь дело со старыми проектами, где клон был сделан в виртуальной среде, а также новых, где виртуальная среда внутри проекта.

+0

Если вы прочитали весь мой вопрос, я использовал pythonbrew. Единственное различие заключается в том, что я использовал команду 'use' для переключения на версию python вместо команды' switch' для создания 'venv'. Когда я использовал команду 'use' и создал« venv »,« venv »имел бы более старую версию, а не ту, которую я использовал в команде' use'. Является ли проблема связана со мной с использованием команды 'use' в отличие от' switch', как вы ее написали выше? – darksky

+0

На самом деле я думал, что проблема связана с попыткой использовать virtualenvwrapper, поэтому я предоставил свой псевдоним для workon, который работает в этом случае. Как только venv будет создан, вы сможете переключиться на что-то еще, и когда вы активируете venv, вы получите нужную версию в этой среде. Возможно, использование pythonbrew для текущей команды аналогично 'LD_LIBRARY = foo runomething', а switch больше похож на' export LI_LIBRARY = foo'. Но как только вы создадите virtualenv, я бы предположил, что он активируется и запускается с правильным python. – boatcoder

+0

Когда я использовал вашу инструкцию: pythonbrew venv create proj | Он создал новый питон (2.7.6) в этом дереве папок: user/.pythonbrew/venvs/Python-2.7.6/proj ... Как теперь установить вещи в этой виртуальной среде? Должен ли я работать с Python-2.7.6, которая находится внутри вендоров? Обычно с pythonbrew я работал бы из любой папки, но для этого вам кажется, что вам нужно работать в этой конкретной папке и делать здесь дополнительные инструменты/библиотеки. Ваши отзывы будут высоко оценены. – Joe

Смежные вопросы