Использование pip и virtualenv
Тут постараюсь свести до кучи использование python 2 и 3, pip, virtualenv, vitrualenvwrapper и PyCharm.
Для определенности версии пакетов:
- Ubuntu - 14.04 trusty
- Python2 - 2.7.6
- Python3 - 3.4.0
- Django - 1.7
- PyCharm - 3.4.1 (windows)
Есть два способа использовать изолированное окружение - либо один virtualenv для всех проектов, либо для каждого проекта свой virtualenv. Так как раньше изолирование не использовал, я пойду по второму пути.
Чтобы узнать, какая версия питона стоит в системе по-умолчанию, можно воспользоваться утилитой pyversions
:
$ pyversions -d
python2.7
Создание виртуального окружения
Новый способ - pyvenv (только python3)
Python3 имеет встроенную утилиту для создания виртуального окружения - pyvenv. К сожалению, на Ubuntu 14.04 она имеет баг, создание окружения аварийно завершается ошибкой:
$ pyvenv-3.4 myvirt
Error: Command '['/home/swasher/django_test/myvirt/bin/python3.4', '-Im', 'ensurepip', \
'--upgrade', '--default-pip']' returned non-zero exit status 1
Разработчики вроде бы пофиксили, но в апстрим фикс попадет только в 14.10. Но не беда, эта утилита основана на питоновском классе EnvBuilder, который появился в 3.3. На сайте python есть пример скрипта. Его работа заключается в создании окружения и установке туда setuptools и pip. Скачиваем скрипт и запускаем:
$ python3 pyvenvex.py yourenv
Aктивируем
$ source yourenv/bin/activate
Можно убедится, что pip и python работают в контейнере
(yourenv)root@test:~# which pip
/home/swasher/yourenv/bin/pip
(yourenv)root@test:~# which python
/home/swasher/yourenv/bin/python
(yourenv)root@test:~# python -V
Python 3.4.0
Все, можно начинать устанавливать джанго
(yourenv)root@test:~# pip install django
Выйти из контейнера можно командой
(yourenv)root@test:~# deactivate
Старый способ - virtualenv (python2 и 3)
Для сравнения приведу старый метод, с помощью virtualenv:
# for python2
$ virtualenv yourenv
# for python3
$ virtualenv -p /usr/bin/python3 yourenv
$ source yourenv/bin/activate
$ pip install package-name
Aктивируем
$ source yourenv/bin/activate
Можно убедится, что pip и python в контейнере
(yourenv)root@test:~# which pip
/home/swasher/yourenv/bin/pip
(yourenv)root@test:~# which python
/home/swasher/yourenv/bin/python
(yourenv)root@test:~# python -V
Python 3.4.0
pyenv
TODO: Существует также утилита pyvenv с плагинами pyenv-virtualenv и pyenv-virtualenvwrapper, которая предлагает очень элегантное управление версиями питона и виртуальными окружениями. статья
Создание нового проекта
Предполагается, что у нас есть несколько django-проектов, некоторые под python2, другие под python3. Новый проект будем создавать под python3.
Создаем новое окружение, ставим джанго и стартуем новый проект. Проект у меня называется uchislova. Так как проект обернут, сам проект джанго мы назовем просто project, а вот приложение (app) - uchislova.
$ python3 pyvenvex.py newproject
$ source uchislova/bin/activate
(uchislova) $ pip3 install django
(uchislova) $ django-admin startproject project
(uchislova) $ cd project/
(uchislova) $ ./manage.py startapp uchislova
(uchislova) $ ./manage.py migrate
(uchislova) $ deactivete
Так, проект мы создали, теперь посмотрим, как будет работать PyCharm с виртуальным окружением.
PyCharm
Создаем в PyCharm новый проект, интерпретатор выбираем из нашего виртуального окружения:
Далее нужно сделать следующее, я не буду подробно расписывать:
- настроить deployment и path mapping
- выбрать Project Interpreter, который создали чуть выше (он у нас python 3.4.0)
- выполнить синхронизацию
- включить поддержу django
- настраиваем конфигурацию запуска dev-сервера из PyCharm, как на картинке:
Не забываем указать наш интерпретатор. Хост 0.0.0.0
нужен для того, чтобы сервер был доступен с любого
внешнего адреса, иначе только с localhost.
Дополнение
Как установить python3-версию пакета через pip?
Взято отсюда.
На новых системах использовать только новый способ! Старый для сравнения приведен.
НОВЫЙ СПОСОБ (начиная с ubutnu 13.10)
sudo apt-get install python3-pip
sudo pip3 install MODULE_NAME
СТАРЫЙ СПОСОБ (не рекомендуется использовать):
sudo apt-get install curl
curl http://python-distribute.org/distribute_setup.py | sudo python3
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | sudo python3
sudo pip-3.2 install MODULE_NAME
Так же можно использовать не system-wide установку, а пользовательскую, с ключем --user
:
$ pip install --user SomePackage
Для некоторых пакетов нужно установка dev:
sudo apt-get install python3-dev
Comments !