Python: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Деактивация виртуального окружения venv)
(Публикация приложения в Nginx UNIT)
Строка 86: Строка 86:
  
 
=Публикация приложения в Nginx UNIT=
 
=Публикация приложения в Nginx UNIT=
==Активация окружения conda для пользователя==
+
 
 +
==Подготовка приложения на компьютере пользователя==
 +
 
 +
===Активация окружения conda для пользователя===
  
 
  /opt/anaconda/bin/conda init bash
 
  /opt/anaconda/bin/conda init bash
Строка 96: Строка 99:
 
  (base) user@prdb-seat webapp $
 
  (base) user@prdb-seat webapp $
  
==Создание каталога с проектом==
+
===Создание каталога с проектом===
  
 
  mkdir ~/my_project
 
  mkdir ~/my_project
Строка 113: Строка 116:
 
</pre>
 
</pre>
  
==Создание и активация виртуального окружения посредством conda==
+
===Создание и активация виртуального окружения посредством conda===
  
 
Переход в каталог проекта
 
Переход в каталог проекта
Строка 129: Строка 132:
 
  (venv) user@prdb-seat my_project $
 
  (venv) user@prdb-seat my_project $
  
==Установка зависимостей в виртуальное окружение==
+
===Установка зависимостей в виртуальное окружение===
  
 
Например, для установки модуля flask для обеспечения запуска приложения
 
Например, для установки модуля flask для обеспечения запуска приложения
Строка 135: Строка 138:
 
  conda install -p venv flask
 
  conda install -p venv flask
  
==Деактивация виртуального окружения venv==
+
===Деактивация виртуального окружения venv===
  
 
  conda deactivate
 
  conda deactivate
Строка 142: Строка 145:
  
 
  (base) user@prdb-seat my_project $
 
  (base) user@prdb-seat my_project $
 +
 +
===Результат===
 +
 +
Все файлы и каталоги внутри каталога
 +
 +
~/my_project
 +
 +
необходимо будет скопировать на сервер с Nginx UNIT, на который необходимо выполнить публикацию приложения

Версия 15:27, 28 февраля 2023

Установка

Установка интерпретатора Python 3

apt-get install python3

Установка модуля venv

Python 3.3+ поставляется с модулем venv.

Виртуальное окружение (venv)

Виртуальное окружение (virtual environment) — это каталог, в который устанавливаются некоторые исполняемые файлы и скрипты. Среди файлов есть python для выполнения скриптов и pip для установки других модулей в окружении. Также есть скрипты для активации окружения в различных командных облочках (по одному для bash, csh и fish). По сути, виртуальное окружение имитирует полную системную установку Python и всех необходимых модулей, не вмешиваясь в работу системы, на которой будет запускаться приложение.

Создание нового venv

python3 -m venv /path/to/new/virtual/environment

Активация venv

Для активации виртуального окружения используйте один из имеющихся скриптов для вашей командной оболочки. Пример для bash:

$ source envname/bin/activate
(envname) $

Справка по модулю

$ python3 -m venv --help
usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear]
            [--upgrade] [--without-pip] [--prompt PROMPT] [--upgrade-deps]
            ENV_DIR [ENV_DIR ...]
Creates virtual Python environments in one or more target directories.

positional arguments:
  ENV_DIR               A directory to create the environment in.

options:
  -h, --help            show this help message and exit
  --system-site-packages
                       Give the virtual environment access to the system
                       site-packages dir.
 --symlinks            Try to use symlinks rather than copies, when symlinks
                       are not the default for the platform.
 --copies              Try to use copies rather than symlinks, even when
                       symlinks are the default for the platform.
 --clear               Delete the contents of the environment directory if it
                       already exists, before environment creation.
 --upgrade             Upgrade the environment directory to use this version
                       of Python, assuming Python has been upgraded in-place.
 --without-pip         Skips installing or upgrading pip in the virtual
                       environment (pip is bootstrapped by default)
 --prompt PROMPT       Provides an alternative prompt prefix for this
                       environment.
 --upgrade-deps        Upgrade core dependencies: pip setuptools to the
                       latest version in PyPI

Once an environment has been created, you may wish to activate it, e.g. by sourcing an activate script in its bin directory.

Способы создания venv

Создание виртуального окружения с символическими ссылками на интерпретатор Python

По умолчанию виртуальные окружения создаются с использованием стандартного системного Python. Файл bin/python — это просто символическая ссылка на системный python:

$ ls -l envname/bin/python
lrwxrwxrwx 1 foo foo 15 янв 29 18:48 envname/bin/python -> /usr/bin/python

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

$ python3 -m venv envname --copies 
$ ls envname/bin/python -l
-rwxr-xr-x 1 vladt vladt 5872328 фев 23 00:00 envname/bin/python

Flask

Установка

$ pip install Flask

Простейший сервер

Собираем сервер

cat << EOF > webapp.py
from flask import Flask
app = Flask(__name__)

 
@app.route('/')
def hello_world():
    return 'Hello, World!'


app.run(host='127.0.0.1', port=5000)
EOF

Запускаем сервер

$ python3 webapp.py

Проверка работы

$ curl 127.0.0.1:5000
Hello, World!

Публикация приложения в Nginx UNIT

Подготовка приложения на компьютере пользователя

Активация окружения conda для пользователя

/opt/anaconda/bin/conda init bash

затем перезапустить эмулятор терминала

После успешного перезапуска эмулятора терминала приглашение командной строки должно выглядеть так:

(base) user@prdb-seat webapp $

Создание каталога с проектом

mkdir ~/my_project
cd ~/my_project
cat << 'EOF' > main.py
from flask import Flask
app = Flask(__name__)
application = app

@app.route('/')
def hello_world():
    return 'Hello, World!'
EOF

Создание и активация виртуального окружения посредством conda

Переход в каталог проекта

cd ~/my_project

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

conda create -p venv python=3.9

Активация виртуального окружения venv

conda activate venv

Приглашение командной строки должно выглядеть так:

(venv) user@prdb-seat my_project $

Установка зависимостей в виртуальное окружение

Например, для установки модуля flask для обеспечения запуска приложения

conda install -p venv flask

Деактивация виртуального окружения venv

conda deactivate

Приглашение командной строки должно измениться на:

(base) user@prdb-seat my_project $

Результат

Все файлы и каталоги внутри каталога

~/my_project

необходимо будет скопировать на сервер с Nginx UNIT, на который необходимо выполнить публикацию приложения