- PVSM.RU - https://www.pvsm.ru -

Пример запуска Django 1.7.4 под Python 3.4.2 на Ubuntu 14.04

Всем привет.

Пример запуска Django 1.7.4 под Python 3.4.2 на Ubuntu 14.04 - 1

В данном примере я покажу один из способов запуска актуальной версии Django под свежим Python.

Python 3.4.2 | Release Date: 2014-10-13 [1]
Django 1.7.4 | January 27, 2015 [2]

Будут использованы virtualenvwrapper [3] и pyenv [4]:
— virtualenvwrapper будет работать с «системным» python2
— используем pyenv для установки последней версии Python
— используем virtualenvwrapper для создания виртуального окружения с последней версей Python «внутри»

Информация про систему

Запуск будет производится на Ubuntu 14.04.1 LTS:

devel787@vbox64:~$ uname -a
Linux vbox64 3.13.0-45-generic #74-Ubuntu SMP Tue Jan 13 19:36:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

devel787@vbox64:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty

После установки Ubuntu по умолчанию доступен bash:

devel787@vbox64:~$ echo $SHELL
/bin/bash

devel787@vbox64:~$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)

Также по умолчанию сразу предустановлены 2 версии Python:

devel787@vbox64:~$ python --version
Python 2.7.6

devel787@vbox64:~$ python3 --version
Python 3.4.0

Установка virtualenvwrapper

virtualenvwrapper представляет из себя удобную обёртку вокруг virtualenv.

Для установки virtualenvwrapper необходимо выполнить некоторые действия.

Получаем новые списки пакетов Ubuntu:

devel787@vbox64:~$ sudo apt-get update

Устанавливаем pip:

devel787@vbox64:~$ sudo apt-get install python-pip

Устанавливаем virtualenvwrapper:

devel787@vbox64:~$ sudo pip install virtualenvwrapper

Настраиваем virtualenvwrapper:

devel787@vbox64:~$ echo '' >> ~/.bashrc

devel787@vbox64:~$ echo '# virtualenvwrapper' >> ~/.bashrc

devel787@vbox64:~$ echo 'export WORKON_HOME=$HOME/.virtualenvs' >> ~/.bashrc

devel787@vbox64:~$ echo 'export PROJECT_HOME=$HOME/vwrapperhome' >> ~/.bashrc

devel787@vbox64:~$ echo 'source /usr/local/bin/virtualenvwrapper.sh' >> ~/.bashrc

devel787@vbox64:~$ echo '' >> ~/.bashrc

Создаём папку для PROJECT_HOME из настроек выше:

devel787@vbox64:~$ mkdir ~/vwrapperhome

Применяем настройки:

devel787@vbox64:~$ source ~/.bashrc

Теперь у нас должны быть доступны команды virtualenvwrapper, например:

devel787@vbox64:~$ workon

devel787@vbox64:~$ virtualenvwrapper

Установка pyenv

pyenv представляет из себя удобную утилиту для управления версиями Python.

Для установки pyenv необходимо выполнить некоторые действия.

Устанавливаем нужные зависимости:

devel787@vbox64:~$ sudo apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm

Устанавливаем git:

devel787@vbox64:~$ sudo apt-get install git

Устанавливаем pyenv:

devel787@vbox64:~$ cd

devel787@vbox64:~$ git clone git://github.com/yyuu/pyenv.git .pyenv

Настраиваем pyenv:

devel787@vbox64:~$ echo '' >> ~/.bashrc

devel787@vbox64:~$ echo '# pyenv' >> ~/.bashrc

devel787@vbox64:~$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc

devel787@vbox64:~$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

devel787@vbox64:~$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc

devel787@vbox64:~$ echo '' >> ~/.bashrc

Применяем настройки:

devel787@vbox64:~$ exec $SHELL

Теперь у нас должны быть доступны команды pyenv, например можно посмотреть версию утилиты:

devel787@vbox64:~$ pyenv --version
pyenv 20150204

Установка Python 3.4.2

pyenv предоставляет возможность установить много разных версий Python.

Для просмотра всех доступных версий необходимо выполнить:

devel787@vbox64:~$ pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
  2.4.2
  2.4.3
  2.4.4
  2.4.5
  2.4.6
  2.5
  2.5.1
  2.5.2
  2.5.3
  2.5.4
  2.5.5
  2.5.6
  2.6.6
  2.6.7
  2.6.8
  2.6.9
  2.7-dev
  2.7
  2.7.1
  2.7.2
  2.7.3
  2.7.4
  2.7.5
  2.7.6
  2.7.7
  2.7.8
  2.7.9
  3.0.1
  3.1-dev
  3.1.3
  3.1.4
  3.1.5
  3.2-dev
  3.2
  3.2.1
  3.2.2
  3.2.3
  3.2.4
  3.2.5
  3.2.6
  3.3.0
  3.3-dev
  3.3.1
  3.3.2
  3.3.3
  3.3.4
  3.3.5
  3.3.6
  3.4.0
  3.4-dev
  3.4.1
  3.4.2
  3.5-dev
  anaconda-1.4.0
  anaconda-1.5.0
  anaconda-1.5.1
  anaconda-1.6.0
  anaconda-1.6.1
  anaconda-1.7.0
  anaconda-1.8.0
  anaconda-1.9.0
  anaconda-1.9.1
  anaconda-1.9.2
  anaconda-2.0.0
  anaconda-2.0.1
  anaconda-2.1.0
  anaconda3-2.0.0
  anaconda3-2.0.1
  anaconda3-2.1.0
  ironpython-dev
  ironpython-2.7.4
  ironpython-2.7.5
  jython-dev
  jython-2.5.0
  jython-2.5-dev
  jython-2.5.1
  jython-2.5.2
  jython-2.5.3
  jython-2.5.4-rc1
  jython-2.7-beta1
  jython-2.7-beta2
  jython-2.7-beta3
  miniconda-2.2.2
  miniconda-3.0.0
  miniconda-3.0.4
  miniconda-3.0.5
  miniconda-3.3.0
  miniconda-3.4.2
  miniconda-3.7.0
  miniconda3-2.2.2
  miniconda3-3.0.0
  miniconda3-3.0.4
  miniconda3-3.0.5
  miniconda3-3.3.0
  miniconda3-3.4.2
  miniconda3-3.7.0
  pypy-c-jit-latest
  pypy-c-nojit-latest
  pypy-dev
  pypy-1.5-src
  pypy-1.5
  pypy-1.6
  pypy-1.7-dev
  pypy-1.7
  pypy-1.8-dev
  pypy-1.8
  pypy-1.9-dev
  pypy-1.9
  pypy-2.0-dev
  pypy-2.0-src
  pypy-2.0
  pypy-2.0.1-src
  pypy-2.0.1
  pypy-2.0.2-src
  pypy-2.0.2
  pypy-2.1-src
  pypy-2.1
  pypy-2.2-src
  pypy-2.2
  pypy-2.2.1-src
  pypy-2.2.1
  pypy-2.3-src
  pypy-2.3
  pypy-2.3.1-src
  pypy-2.3.1
  pypy-2.4.0-src
  pypy-2.4.0
  pypy-2.4-beta1-src
  pypy-2.4-beta1
  pypy-2.5.0-src
  pypy-2.5.0
  pypy3-dev
  pypy3-2.3.1-src
  pypy3-2.3.1
  pypy3-2.4.0-src
  pypy3-2.4.0
  stackless-dev
  stackless-2.7-dev
  stackless-2.7.2
  stackless-2.7.3
  stackless-2.7.4
  stackless-2.7.5
  stackless-2.7.6
  stackless-2.7.7
  stackless-2.7.8
  stackless-3.2-dev
  stackless-3.2.2
  stackless-3.2.5
  stackless-3.3-dev
  stackless-3.3.5
  stackless-3.4.1

Устанавливаем Python 3.4.2:

devel787@vbox64:~$ pyenv install 3.4.2 -v

Выполняем 'rehash' (Rebuild the shim binaries. You should do this any time you install a new Python binary):

devel787@vbox64:~$ pyenv rehash

Для просмотра установленных версий Python необходимо выполнить:

devel787@vbox64:~$ pyenv versions
* system (set by /home/devel787/.pyenv/version)
  3.4.2

Создание виртуального окружения

Теперь можно создать виртуальное окружение на базе Python 3.4.2.

По умолчанию бинарный файл Python 3.4.2 будет доступен в '~/.pyenv/versions/':

devel787@vbox64:~$ ls -lahF ~/.pyenv/versions/3.4.2/bin/python
lrwxrwxrwx 1 devel787 devel787 9 Feb 10 16:24 /home/devel787/.pyenv/versions/3.4.2/bin/python -> python3.4*

Создаём виртуальное окружение (и сразу оказываемся “внутри” него):

devel787@vbox64:~$ mkvirtualenv -p ~/.pyenv/versions/3.4.2/bin/python polls174-py342-venv

Проверяем версию Python:

(polls174-py342-venv)devel787@vbox64:~$ python --version
Python 3.4.2

Для выхода из виртуального окружения необходимо выполнить:

(polls174-py342-venv)devel787@vbox64:~$ deactivate

Для просмотра всех виртуальных окружений необходимо выполнить:

devel787@vbox64:~$ workon
polls174-py342-venv

Попасть “обратно” в виртуальное окружение можно выполнив:

devel787@vbox64:~$ workon polls174-py342-venv

Запуск Django 'polls' app

Для демонстрации работоспособности Django 1.7.4 под Python 3.4.2 запустим Django 'polls' app из Django Tutorial [5].

Я создал репозиторий, который содержит выполненный Django Tutorial и файл 'requirements.txt'.

Перейдём в папку для PROJECT_HOME из настроек выше:

(polls174-py342-venv)devel787@vbox64:~$ cd ~/vwrapperhome/

«Склонируем» себе репозиторий, который содержит выполненный Django Tutorial:

(polls174-py342-venv)devel787@vbox64:~/vwrapperhome$ git clone https://github.com/devel787/polls174.git

Перейдём в папку с проектом:

(polls174-py342-venv)devel787@vbox64:~/vwrapperhome$ cd polls174/

«Закрепим» папку проекта за нашим виртуальным окружением (при активации окружения мы будем попадать в эту папку):

(polls174-py342-venv)devel787@vbox64:~/vwrapperhome/polls174$ setvirtualenvproject
Setting project for polls174-py342-venv to /home/devel787/vwrapperhome/polls174

Установим Django 1.7.4:

(polls174-py342-venv)devel787@vbox64:~/vwrapperhome/polls174$ pip install -r requirements.txt

Запустим тесты:

(polls174-py342-venv)devel787@vbox64:~/vwrapperhome/polls174$ python manage.py test

Запустим сервер для разработки:

(polls174-py342-venv)devel787@vbox64:~/vwrapperhome/polls174$ python manage.py runserver

Теперь можно перейти по ссылке
http://127.0.0.1:8000/polls/ [6]
и увидеть результаты работы данного примера.
Для /admin/ Username == Password == 'admin'.

Литература

Virtual Environments | The Hitchhiker's Guide to Python [7]
virtualenvwrapper | Installation [8]
pyenv | Installation [9]

Blast into PyEnv [18 сентября 2014] [10]
Building Python on Ubuntu with pyenv [02 марта 2014] [11]
Менеджер версий python [25 ноября 2013] [12]
Мульти-хостинг django приложений с помощью nginx + uwsgi + virtualenv [15 мая 2013] [13]

Writing your first Django app, part 1 [5]

Автор: devel787

Источник [14]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/82680

Ссылки в тексте:

[1] Python 3.4.2 | Release Date: 2014-10-13: https://www.python.org/downloads/release/python-342/

[2] Django 1.7.4 | January 27, 2015: https://docs.djangoproject.com/en/1.7/releases/1.7.4/

[3] virtualenvwrapper: https://virtualenvwrapper.readthedocs.org/en/latest/

[4] pyenv: https://github.com/yyuu/pyenv

[5] Django Tutorial: https://docs.djangoproject.com/en/1.7/intro/tutorial01/

[6] http://127.0.0.1:8000/polls/: http://127.0.0.1:8000/polls/

[7] Virtual Environments | The Hitchhiker's Guide to Python: http://docs.python-guide.org/en/latest/dev/virtualenvs/

[8] virtualenvwrapper | Installation: http://virtualenvwrapper.readthedocs.org/en/latest/install.html

[9] pyenv | Installation: https://github.com/yyuu/pyenv#installation

[10] Blast into PyEnv [18 сентября 2014]: http://oblalex.blogspot.com/2014/09/blast-into-pyenv.html

[11] Building Python on Ubuntu with pyenv [02 марта 2014]: http://davebehnke.com/python-pyenv-ubuntu.html

[12] Менеджер версий python [25 ноября 2013]: http://habrahabr.ru/post/203516/

[13] Мульти-хостинг django приложений с помощью nginx + uwsgi + virtualenv [15 мая 2013]: http://habrahabr.ru/post/179831/

[14] Источник: http://habrahabr.ru/post/250433/