Рабочий процесс с использованием virtualenv и pip
У меня есть python2.6 и django1.2.3, уже установленные в моей системе (Ubuntu 10.x).
Это настройка, которую я использую для большинства моих проектов. Но для некоторых проектов мне нужны среды с песочницей, другая версия django, некоторые дополнительные модули python и иногда даже другая версия python.
Итак, я пытаюсь использовать pip и virtualenv сейчас, но я не могу изменить версию python и django. Я должен удалить настройку по умолчанию и переместить все существующие проекты в 1 virtualenv. Могу ли я избежать этого? Даже если я это сделаю, как я могу указать другую версию python?
Если мне нужно удалить старые настройки. Как мне это сделать? В настоящее время у меня есть большинство вещей, установленных в /usr/local/lib/python2.6/dist-packages/
, но я не уверен, есть ли что-либо еще в другом месте.
Если у меня есть совершенно пустая настройка с помощью только Ubuntu, какой идеальный рабочий процесс? Это он?
Install python
$ sudo apt-get install python-setuptools
$ sudo apt-get install python-virtualenv
$ sudo easy_install pip
$ sudo pip install virtualenvwrapper
Ответы
Ответ 1
Вы хотите сделать:
virtualenv --python=/path/to/python/version --no-site-packages ENV_NAME
Например:
virtualenv --python=/usr/bin/python2.6 --no-site-packages my_project_env
Если вы выполните это для своих проектов, вы сможете иметь отдельную конфигурацию для каждого из них.
Ответ 2
Я установил каждую версию Python, которая мне нужна (которая 2.4, 2.5, 2.6, 2.7, 3.1, а также 3.2) из источника. Это всегда лучше всего делать, поэтому вы не испортите систему Python.
Я установил их в /opt. Так же (сначала вам понадобится пакет Ubuntu):
./configure --prefix /opt/pythonxx
make -j2; make install # j2 is a nice trick there for dualcores not everyone knows.
Затем я для каждой версии устанавливаю то, что мне нужно. Я начинаю с установки Distribute:
wget http://nightly.ziade.org/distribute_setup.py
/opt/pythonxx/bin/python distribute_setup.py
(За исключением Python 3, которому требуется distribute_setup3.py)
Затем я могу установить pip
/opt/pythonxx/bin/easy_install pip
И virtualenv:
/opt/pythonxx/bin/pip install virtualenv
(Virtualenv3 или virtualenv5 для Python 3)
И это! Если я хочу сделать virtualenv с помощью Python 2.4, я:
/opt/python24/bin/virtualenv foobar
И Python 2.7:
/opt/python27/bin/virtualenv foobar
Запуск python - это просто
/opt/python24/bin/python
Etc. Я никогда ничего не устанавливаю в вышеупомянутых Pythons, кроме этих модулей, и PIL (потому что PIL - это боль, но теперь есть подушка, так что вам тоже не нужно это делать). Я использую zc.buildout и virtualenv, чтобы сохранить питоны в чистоте.
Ответ 3
Вы можете использовать virtualenv --no-site-packages ENVNAME
, и убедитесь, что Django по умолчанию в вашей системе Python не будет включен в вашу новую среду.
Для разных версий Python вы можете следовать этим инструкциям из сообщения superuser.com.