В материале будет разобрано создание виртуального окружения python на сервере с Debian. Будем устанавливать Python 3.
Запуск проекта на Django, Flask и любого проекта на Python лучше всего выполнять с использованием виртуального окружения python.
Виртуальное окружение — изолированная среда со своими пакетами определенных версий устанавливаемых независимо от пакетов в самой системе.
Используется Python 3, если его в системе нет — пакет также устанавливается отдельно (как это делается разберем в заключительной части статьи). Сначала информация для случая когда Python3 есть в системе.
Создание виртуального окружения Python
Устанавливаем виртуальное окружение через pip
pip3 install virtualenv
или
python3 -m pip install virtualenv
/root/.local/bin/python3: No module named pip
Если возникает ошибка об отсутствии модуля — ставим его дополнительно
apt-get install python3-pip
Затем устанавливаем окружения задавая версию модуля, которую необходимо использовать
pip3 install virtualenv
Создаем каталог с проектом и переходим в него
mkdir DjangoProject && cd DjangoProject
Создаем виртуальное окружение python
virtualenv DjangoProject
После активации виртуального окружения в командной строке должно появиться его название
source DjangoProject/bin/activate
Дальнейшие действия требуются только если Python3 на сервере нет.
Установка Python 3 на сервер и виртуальное окружение python3
В Debian 8 (дистрибутив выбран для демонстрации, отличий от современных версий в этом отношении нет) по умолчанию уже установлен Python, но версии 2. Он есть и в других дистрибутивах.
Проверить версию можно такой командой:
python -V
Python 2.7.9
Еще проверить есть ли пакет в системе можно следующим образом:
which python
/usr/bin/python
ls -la /usr/bin/python
lrwxrwxrwx 1 root root 9 мар 16 2015 /usr/bin/python -> python2.7
Видно, что символьная ссылка для python ведёт на версию 2.7. Это однозначно не говорит о том, что 3 версии в системе нет, но системная версия 2.7
Ещё версии установленных пакетов можно посмотреть с помощью пакетного менеджера, для Debian/Ubuntu это dpkg
На скриншоте видно, что Python 3 в системе есть, если в выводе только пакеты версии 2, то нужно устанавливать Python 3.
Рассмотрим установку Python3
Прежде всего с официального сайта потребуется скачать свежую версию, в примере это Python-3.4.3.
wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz
Распаковываем архив.
tar xvzf Python-3.4.3.tgz
Переходим в каталог с файлами пакета и запускаем конфигуратор
cd Python-3.4.3
./configure --prefix=$HOME/.local
В процесс конфигурации может возникнуть сообщение об ошибке из которой следует, что отсутствует компилятор С:
configure: error: in `/root/Python-3.4.3':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
Обновляем информацию о репозиториях
apt-get update
Устанавливаем компилятор С
apt-get install gcc
Компилируем и устанавливаем
make
Если возникает сообщение об ошибке следует установить и этот пакет
apt-get install make
make install
Компиляция может занять какое-то время.
Среди прочего будут установлены пакеты pip (используемый для инсталяции модулей Python) и setuptools (позволяющий собирать, устанавливать и удалять Python пакеты)
Открываем для редактирования файл .bash_profile в домашнем каталоге пользователя и добавляем строку с путем
mcedit ~/.bash_profile
# Python 3
export PATH="$HOME/.local/bin:$PATH"
Даем команду на считывание файла окружения пользователя (материал про переменные окружения)
source ~/.bash_profile
Проверяем версию установленного пакета
python3 -V
Python 3.4.3
Здесь указан python3, если версию не указать и выполнить python -V — будет выведена информация о пакете python2, потому что символьная ссылка на версию 2.7 продолжает существовать.
Если нужно заменить системную версию python, то достаточно поправить символьную ссылку.
Создание виртуального окружения python после установки Python3 выполняется так как описано в начале статьи.
Читайте про деплой приложения на python (фреймворк Flask)
Также читайте про gunicorn — сервер приложений, который позволяет быстро запускать сайты на Django