Интерфейс командной строки (CLI), представляет собой способ взаимодействия с компьютерами с помощью текстовых команд.
Многие инструменты, для которых не требуется графический интерфейс, написаны как инструменты / утилиты CLI. Хотя в Python есть встроенный модуль argparse , существуют и другие библиотеки с аналогичной функциональностью.
Эти библиотеки могут помочь нам в написании сценариев CLI, предоставляя такие услуги, как параметры синтаксического анализа и флаги, для гораздо более продвинутых функций CLI.
В этой статье обсуждается библиотека Python Fire, написанная Google Inc., полезный инструмент для создания интерфейса командной строки с минимальным кодом.
Общая форма приложений CLI
Прежде чем мы начнем с библиотеки Fire , давайте попробуем разобраться в основах программ интерфейса командной строки в целом. В зависимости от программы и команды общий шаблон интерфейса командной строки можно резюмировать следующим образом:
prompt command parameter1 parameter2 . parameterN
- prompt — это последовательность символов, которая предлагает пользователю ввести команду
- command — это имя программы, которую выполняет пользователь (например ls )
- parameters — это необязательные токены, которые дополняют или изменяют вывод команды
Программа CLI запускается путем ввода имени программы после появления prompt, в данном случае символа $.
PyCharm не запускается код
Здесь мы используем команду ls , которая возвращает список имен файлов в каталоге, текущий каталог используется по умолчанию:
$ ls README.md python
Вы можете изменить поведение или вывод программы командной строки, предоставив ей список токенов или параметров, более известных как флаги. Давайте попробуем флаги команды ls :
$ ls -l -rwxrwxrwx 1 pandeytapan pandeytapan 10 Sep 23 18:29 README.md drwxrwxrwx 1 pandeytapan pandeytapan 512 Sep 23 18:29 python
Как видите, после передачи флага -l мы получаем дополнительную информацию для каждой записи, такую как владелец, группа и размер файла.
Флаги, содержащие один дефис ( — ), называются короткими параметрами, а флаги с двумя дефисами ( — ) — длинными. Оба вида можно использовать вместе в одной команде, как в следующем примере:
$ ls -l —time-style=full-iso -rwxrwxrwx 1 pandeytapan pandeytapan 10 2020-09-23 18:29:25.501149000 +0530 README.md drwxrwxrwx 1 pandeytapan pandeytapan 512 2020-09-23 18:29:25.506148600 +0530 python
Разница между коротким и длинным вариантами:
- Короткие варианты можно объединить в цепочку
- Если мы хотим использовать короткие варианты как -l так и -a, мы просто вводим -al
- Короткие варианты обозначаются одним символом, а длинные варианты имеют полное имя, разделенное дефисом, и не могут быть объединены в цепочку.
Флаг —time-style работает с флагом -l и управляет форматом отображения времени для файлов каталога.
Интерфейс командной строки предоставляет пользователю простой способ настройки и запуска приложения из командной строки. Библиотека Python Fire позволяет легко добавить компонент обработки интерфейса командной строки в любой существующий скрипт Python.
Python в EXE
Давайте посмотрим, как создать приложение из командной строки с помощью Python Fire.
Установка
Давайте продолжим и установим библиотеку, используя pip :
pip install fire
Python Fire работает с любым объектом Python, т.е. функциями, классами, словарями, списками и т. д. Давайте попробуем понять использование библиотеки Python Fire на некоторых примерах.
Создание приложения CLI с помощью Python Fire
Скажем, создадим сценарий fire_cli.py и поместим в него функцию:
def greet_mankind(): «»»Greets you with Hello World»»» return ‘Hello World’
При запуске этой программы в оболочке Python вывод будет:
>>> from fire_cli import greet_mankind >>> greet_mankind() ‘Hello World’ >>>
Как быстро запустить проект и приложение Django?
Изучение
На чтение 10 мин Просмотров 1.4к. Опубликовано 08.12.2021
В этом руководстве мы узнаем разницу между проектом Django и приложением Django, а также узнаем, как запустить новый проект Django.
Django — это предпочтительный веб-фреймворк Python для создания веб-приложений. Это зрелая, полнофункциональная, гибкая платформа с открытым исходным кодом, которая позволяет создавать что угодно, от простого приложения CRUD до более сложного проекта с несколькими приложениями, такого как приложение для обмена фотографиями.
Требования
Вам не нужны предварительные знания для создания проекта Django. Но Django — это фреймворк Python, поэтому для его использования у вас должен быть прочный фундамент использования Python.
Перед запуском убедитесь, что у вас есть терминал или командная строка с установленным Python 3.6 или новее.
В большинстве систем macOS и Linux по умолчанию установлен Python 3, но если вы используете Windows, вам необходимо загрузить и установить Python. Вы можете следовать этому руководству на официальном сайте Python.
Вы можете открыть терминал, открыв поиск приложений в своей операционной системе и выполнив поиск терминала, или в Windows, cmd.
После того, как вы настроили терминал, пришло время подтвердить свою версию Python. Для этого введите следующую команду:
python —version Python 3.9.7 # My result
Если вы не получили результат вида Python 3.x, не паникуйте. Есть два варианта:
- если вы python —versionвернули версию Python 2.x, вам нужно будет использовать python3вместе с этим руководством. Обычно это происходит с некоторыми системами MacOS, а также с некоторыми дистрибутивами Linux, такими как Ubuntu. Попробуйте выполнить следующую команду:
python3 —version Python 3.9.7 # Again, my result
- если у вас возникла Unknown commandошибка, вы попытались запустить python3, но по-прежнему получили еще одну ошибку, вам необходимо загрузить и установить Python с официального сайта.
Теперь, когда вы знаете, какую команду Python запускать в вашем терминале, давайте перейдем к проектам Django.
Что такое проект Django?
Проект Django — это пакет Python, необходимый для работы веб-приложения. Он содержит все, что вам нужно для создания бэкэнда (серверная разработка, чего не видят пользователи) вашего сайта. Обычная функциональность проекта Django определяет, как вы взаимодействуете с базой данных, аутентификацию, как данные извлекаются и так далее.
Вы также можете рассматривать его как набор настроек и небольших модулей Python с именем apps. Мы поговорим о них позже, но в качестве предварительной концепции приложение — это еще один набор файлов Python, которые решают конкретную задачу вашего приложения.
Из этой статьи вы узнаете о сложной структуре проекта Django. Но с самого начала я хочу, чтобы вы знали, что проект Django можно сузить до одного файла, что-то вроде проекта Flask.
Быстрая демонстрация этого — проект Minimal Django. Это файл с 23 строками кода, который позволяет нам создать Django «Hello, World!» проект в жизнь:
import sys from django.conf import settings from django.urls import path from django.core.management import execute_from_command_line from django.http import HttpResponse settings.configure( DEBUG=True, ROOT_URLCONF=sys.modules[__name__], ) def index(request): return HttpResponse(‘
A minimal Django response!
‘) urlpatterns = [ path(r», index), ] if __name__ == ‘__main__’: execute_from_command_line(sys.argv)
Теперь проект Django может пойти намного дальше. Отличным примером является Instagram, у которого есть тысячи конечных точек Django и который до сих пор использует эту структуру для важнейших функций.
Как настроить проект Django
Не волнуйтесь, если некоторые из следующих команд кажутся сложными. Создав пару проектов, вы будете знать их как свои пять пальцев.
Прежде всего, вам нужно знать, что Django — это внешний пакет. Другими словами, он не встроен в Python, поэтому вам необходимо установить его с помощью PIP.
PIP — это менеджер пакетов для Python, инструмент, который позволяет устанавливать пакеты Python из индекса пакетов Python (PyPI).
Теперь, прежде чем устанавливать фактический пакет Python, вам необходимо создать виртуальную среду. Рекомендуется создавать виртуальную среду для каждого создаваемого вами проекта Django, чтобы вы могли отслеживать зависимости.
Возможно, ваш код в проекте Django 2.6 может не работать с Django 3.0. Виртуальная среда позволяет вам иметь определенные требования для каждого вашего проекта.
Вы можете создать виртуальную среду с именем.venv(или любым другим именем) с помощью следующей команды:
python -m venv .venv
Теперь, если вы перечислите файлы в текущем каталоге, вы увидите новую папку с именем.venv, которая в то же время содержит изолированные двоичные файлы Python:
$ ls -lah .venv/ Permissions Size User Date Modified Name drwxr-xr-x — daniel 10 nov 23:13 . drwxr-xr-x — daniel 10 nov 23:13 .. drwxr-xr-x — daniel 10 nov 23:13 bin drwxr-xr-x — daniel 10 nov 23:13 include drwxr-xr-x — daniel 10 nov 23:13 lib lrwxrwxrwx 3 daniel 10 nov 23:13 lib64 -> lib .rw-r—r— 69 daniel 10 nov 23:13 pyvenv.cfg
Чтобы активировать виртуальную среду, вам необходимо активировать ее с помощью следующей команды:
source .venv/bin/activate
Это будет работать только в оболочках bash (доступно в macOS и Linux). Если вы используете другую оболочку, вы можете взглянуть на следующую venvтаблицу активации :
Платформа | Оболочка | Команда для активации виртуальной среды |
POSIX | bash / zsh | $ source.venv> / bin / активировать |
рыба | $ source.venv> /bin/activate.fish | |
csh / tcsh | $ source.venv> /bin/activate.csh | |
Ядро PowerShell | $.venv / bin / Activate.ps1 | |
Windows | cmd.exe | C: >.venv Scripts activate.bat |
PowerShell | PS C: >.venv Scripts Activate.ps1 |
Способ проверить, активирована ли ваша оболочка, — это поиск изменений в вашем приглашении. В моем случае то, что я видел, изображено ниже.
Теперь установите пакет Django. Вы можете установить последнюю или конкретную версию Django:
pip install django # Latest version pip install django==2.2 # Specific version
Начать проект
После того, как вы установили Django, чтобы начать новый проект, вы вызываете утилиту командной строки django-admin и запускаете:
django-admin startproject project_name>
Стоит отметить, что некоторые имена зарезервированы для Django — djangoили django-admin. Не волнуйтесь, если вы получите сообщение об ошибке. Просто попробуйте использовать другое название проекта:
django-admin startproject django # CommandError: ‘django’ conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name. django-admin startproject django-admin # CommandError: ‘django-admin’ is not a valid project name. Please make sure the name is a valid identifier.
Распространенной практикой является наименование вашего проекта как config, и это имеет некоторые преимущества.
Во-первых, это имя, которое вы можете сохранить единообразно для всех ваших проектов, а во-вторых, обычно в папке «project» хранятся только файлы, связанные с конфигурацией. Вы можете прочитать больше на официальном форуме Django :
django-admin startproject config
Структура проекта Django
После того, как вы запустите проект Django, вы увидите новую папку с именем выбранного вами проекта и структурой, подобной этой:
. ├── config │ ├── config │ │ ├── asgi.py │ │ ├── __init__.py │ │ ├── settings.py │ │ ├── urls.py │ │ └── wsgi.py │ └── manage.py └── .venv
Давайте подробно проанализируем каждую часть:
- config/ это внешняя папка вашего проекта. Для Django это не имеет значения, поэтому вы можете переименовать его как хотите.
- config/config/ — это фактическая папка проекта Django. Он содержит файлы настроек вашего проекта.
- manage.py представляет собой скрипт Python с той же функциональностью, django_adminно использует настройки вашего проекта.
- __init__.py создает config/configпакет Python.
- settings.py это основной файл вашего проекта. Вы можете добавлять, изменять или удалять переменные, чтобы изменить поведение вашего проекта.
- urls.py — это файл, определяющий URL-адреса вашего проекта.
- asgi.pyи wsgi.py позвольте вам развернуть свой проект на сервере.
Я знаю, что структура проекта Django может быть немного сложной вначале, но со временем она начинает обретать смысл. У каждого файла есть цель, и процесс разработки становится действительно приятным.
Распространенным ярлыком является отказ от создания внешней папки. Это полезно, потому что вам не придется изменять структуру проекта при развертывании на что-то вроде Heroku:
django-admin startproject project_name> .
Так, например, для каждого запускаемого вами проекта Django вы можете выполнить следующую команду:
django-admin startproject config .
Попробуйте каждую команду по своему усмотрению и решите, какая из них лучше для вас.
Чтобы закончить этот раздел, мы запустим сервер разработки Django и проверим, что установка проекта прошла успешно.
Перейдите в корневую папку вашего проекта (где manage.pyнаходится) и запустите сервер с помощью этой команды:
python manage.py runserver
Теперь перейдите в свой браузер, введите localhost: 8000 /, и вы должны увидеть страницу Django по умолчанию.
Как настроить приложение Django
Как я уже говорил вам ранее, проект Django отличается от приложения Django.
Из официальных документов: «Приложение — это веб-приложение, которое что-то делает». Это что-то особенное, например, приложение пользователя, приложение для комментариев, приложение чата.
Чем более функционально ориентированы ваши приложения, тем лучше.
Приложение Django является самодостаточным, что означает, что его можно повторно использовать от проекта к проекту. Вот почему вы можете установить внешнее приложение, например Django-allauth, и использовать его в своем проекте, просто добавив его в INSTALLED_APPSпеременную.
Вы будете проводить большую часть своего времени, работая с приложениями, потому что они одно за другим создают все функции вашего проекта.
С этого момента вы будете использовать эту manage.pyутилиту, поэтому для создания приложения перейдите в корневую папку вашего проекта и выполните следующую команду:
python manage.py startapp app_name>
Постарайтесь указать названия приложений как можно более конкретными. Если вы хотите создать приложение для интеграции платежей с PayPal или Stripe, назовите его просто payments:
python manage.py startapp payments
Давайте углубимся в структуру приложения Django:
. ├── config │ ├ ├── manage.py └── payments ├── admin.py ├── apps.py ├── __init__.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py └── views.py
- payments/ это папка вашего приложения.
- admin.py используется для регистрации моделей в интерфейсе администратора Django.
- apps.py определяет конфигурацию приложения.
- models.py используется для хранения моделей, которые представляют собой объекты, которые мы создаем для хранения и управления данными.
- migrations/- это папка, содержащая сценарии миграции приложения. Вы запускаете миграции, чтобы применить изменения наших моделей в базе данных.
- tests.py используется для тестирования приложения.
- views.pyэто файл, в котором мы определяем представления нашего приложения. Представление — это вызываемый объект Python, который получает HTTP-запрос и возвращает HTTP-ответ.
Внутри своих приложений вы можете создавать другие файлы и папки и даже создавать шаблоны, которые являются способом Django для динамического отображения данных на веб-странице.
Шпаргалка по командам
В этом руководстве мы использовали множество команд, поэтому вот краткое описание назначения каждой команды.
Командование | Описание |
python -m venv (name_of_venv) | Создает виртуальную среду |
source (venv)/bin/activate | Активирует виртуальную среду |
django-admin startproject (project_name) | Запускает проект Django |
django-admin startproject (project_name). | Устанавливает проект в том же каталоге |
python manage.py runserver | Запускает сервер Django |
python manage.py startapp (app_name) | Создает приложение Django |
Заключение
Django — это полнофункциональный веб-фреймворк, который позволяет создавать приложения любого типа. Настроить проект Django быстро и легко, и вы можете сразу приступить к работе над своим проектом.
С помощью этого урока вы научились:
- создать виртуальную среду
- установить конкретную версию Django
- начать проект Django
- запустить сервер Django
- создать приложение Django
- различать приложение Django и проект Django
Источник: bestprogrammer.ru
Установка Python в Docker — от запуска контейнера до создания рабочей среды
Новые версии Python разрабатывают всё время. Но каждый раз компилировать его самому, чтобы попробовать новую версию, довольно обременительно.
Выход из этой ситуации прост — запускать различные версии Python через Docker.
Из этого руководства вы узнаете:
- Какие версии Python доступны.
- Как начать работу с Docker.
- Как запускать определённую версию Python в контейнерах Docker.
- Как использовать контейнеры Docker в качестве рабочих сред Python.
Docker и версии Python
С прекращением поддержки Python 2.7 в 2020 году, долгий переход от Python 2 к Python 3 вошел в финальную фазу. Однако, двигаясь вперёд, важно знать о различных версиях Python и о том, как их опробовать.
Типы версий Python
- Официальные релизы (Released versions). Обычно, в этом случае речь идёт о чём-то вроде Python 3.6, 3.7 или 3.8. В каждой из этих версий добавлены новые возможности. Поэтому, чтобы правильно оценивать функционал, нужно знать, какая именно версия релиза запущена. К примеру, f-строки (метод форматирования f-strings) ввели в Python 3.6. На более ранних версиях он не работает. Подобным образом, выражения присваивания доступны только начиная с Python 3.8.
- Разрабатываемые версии (Development versions). Сообщество Python постоянно работает над новыми версиями. Пользователям доступны разрабатываемые версии, отмеченные как альфа, бета и релиз-кандидат (release candidate).
- Реализации (Implementations). Python — язык, имеющий несколько вариантов дополнительных реализаций на основе вышедших официальных версий. Каждая из них содержит интерпретатор и соответствующие библиотеки. CPython — эталонная реализация Python, ее используют чаще всего. Тем не менее есть и другие реализации, ориентированные под специфические нужды. Среди них PyPy, IronPython, Jython, MicroPython и CircuitPython.
Версию используемого Python можно увидеть при запуске интерпретатора REPL. Можно также получить дополнительную информацию c помощью команды «sys.implementation».
>>> import sys >>> sys.implementation.name ‘cpython’ >>> sys.implementation.version sys.version_info(major=3, minor=9, micro=0, releaselevel=’alpha’, serial=1)
Как видно, код выполнен на первой альфа-версии CPython 3.9.
Традиционно для управления различными версиями Python используются инструменты вроде «pyenv» и «conda». В большинстве случаев их может заменить Docker. И он часто оказывается проще в использовании. Ниже мы практически покажем, как это сделать.
Использование Docker
Docker — мощная платформа для запуска контейнеров с предварительно упакованными приложениями. Она популярна в сфере упаковки и развёртывания приложений и микросервисов. В этом разделе мы сделаем краткий обзор основных шагов, которые нужны, чтобы начать работу с Docker.
Установка Docker
Docker доступен для всех основных ОС: Windows, macOS и Linux. Инструкции по установке Docker на конкретную систему можно найти в их официальных руководствах.
Если специфических требований нет, можно использовать ядро приложения — Docker Engine — в свободно распространяемой «общественной» редакции (Community Edition).
Запуск контейнеров
Работа Docker основана на двух базовых элементах — образах и контейнерах.
- Образ — автономный пакет, который может выполнить Docker.
- Контейнер — выполняемый образ с определённым состоянием (как пользовательский процесс).
Есть несколько репозиториев, содержащих предварительно собранные образы для Docker. Самым распространённым является Docker Hub — публичный репозиторий, который будет использоваться в данном руководстве по умолчанию.
Для примера установим образ «hello-world».
$ docker run hello-world Unable to find image ‘hello-world:latest’ locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:451ce787d12369c5df2a32c85e5a03d52cbcef6eb3586dd03075f3. Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. [ . Результат выполнения команды сокращён . ]
Первые строки показывают, что Docker скачал образ «hello-world» из репозитория Docker Hub. При запуске этого образа итоговый контейнер выводит на терминал сообщение «Hello from Docker!».
Создание собственных образов с помощью Dockerfile
С помощью Dockerfile можно создавать собственные образы. Это обычный текстовый файл, который описывает, как именно будет устанавливаться образ Docker.
Вот пример Dockerfile:
FROM ubuntu RUN apt update apt install -y cowsay CMD [«/usr/games/cowsay», «Dockerfile это круто!»]
Файл Dockerfile состоит из перечня команд Docker. В приведённом выше фрагменте три шага:
- Строка 1 создаёт на базе существующего образа под названием «ubuntu» новый. Она выполнима вне зависимости от ОС, на которой запущен Docker.
- Строка 2 устанавливает программу под названием «cowsay».
- Строка 3 задаёт команду, которая сразу запускает «cowsay» при выполнении образа.
Создание Dockerfile начинается с правильного сохранения — под именем «Dockerfile» без какого-либо расширения.
Примечание. Создавать и запускать образы Linux можно на любой платформе. Поэтому такие образы, как «ubuntu», прекрасно подходят для разработки кросс-платформенных приложений. В то же время образ Windows запустится только на Windows, а образ macOS — только на macOS.
Далее создаём при помощи Dockerfile образ:
$ docker build -t cowsay
В результате последует множество сообщений, и будет создан образ. Опция «-t cowsay» задаёт «cowsay» в качестве его имени. Такие теги удобно использовать для отслеживания образов. Финальная точка в команде указывает текущий каталог в качестве контекста сборки для вашего образа.
Это должен быть каталог, где находится ваш Dockerfile.
Теперь образ Docker можно выполнить:
$ docker run —rm cowsay _______________________ < Dockerfile это круто! >———————— ^__^ (oo)_______ (__) )/ ||—-w | || ||
Опция « —rm » очистит контейнер после использования. Её применение позволяет не засорять систему уже ненужными контейнерами Docker.
Примечание. Вывести список ваших образов и контейнеров можно, используя команду «docker ps -a».
И образ, и контейнер имеют 12-символьный идентификатор «ID», который можно найти в результатах выполнения этих команд. Чтобы удалить образ или контейнер, можно использовать «docker rmi » либо «docker rm », указав их правильный идентификатор.
Возможности команды « docker » очень велики. За расширенной справкой можно обратиться к команде « docker —help » или к официальной документации.
Запуск Python в контейнере Docker
Сообщество Docker выпускает и поддерживает релизы в виде файлов Dockerfile для всех новых версий Python. Опробовать новые функции Python можно, воспользовавшись ими.
Кроме того, ключевые разработчики Python поддерживают образы Docker со всеми доступными на настоящий момент версиями. Далее расскажем, как запустить разные версии Python через Docker.
Запуск REPL
При запуске образов Python из Docker Hub, открывается интерпретатор REPL, в котором будет проходить дальнейшая работа. Чтобы открыть его в контейнере Python, следует выполнить следующую команду:
$ docker run -it —rm python:rc Python 3.8.0rc1 (default, Oct 2 2019, 23:30:03) [GCC 8.3.0] on linux Type «help», «copyright», «credits» or «license» for more information. >>>
Эта команда скачает образ «python:rc» с сайта Docker Hub, сделает на его основе контейнер и уже в нём выполнит команду «python».
Опции «-it» необходимы для интерактивного запуска контейнера. Тег «rc» означает «релиз-кандидат» и указывает на последнюю разрабатываемую бета-версию Python. В нашем случае это последний релиз-кандидат Python 3.8:
>>> import sys >>> f»» «sys.version_info[:] = (3, 8, 0, ‘candidate’, 1)»
При первом запуске контейнера Python на его скачивание может потребоваться некоторое время. Но дальнейшие вызовы уже будут происходить практически мгновенно. Выйти из интерпретатора REPL можно, введя « exit() ». Одновременно произойдёт выход из контейнера.
Примечание. Образы Python для Docker Hub поддерживаются в достаточно актуальном состоянии. По мере готовности, альфа- и бета-версии становятся доступны под тегом «rc».
Если нужно опробовать самые последние версии Python, то больше подойдёт образ от ключевых разработчиков:
$ docker run -it —rm quay.io/python-devs/ci-image:master
В хранилище Docker Hub можно найти полный список доступных образов Python. Последняя версия Python (стабильная) доступна как « python:latest », а свежая разрабатываемая версия — как « python:rc ».
Также можно запросить и точные версии. Например, «python:3.6.3» или «python:3.8.0b4», т.е. четвёртую бету Python 3.8. Можно даже запустить последнюю реализацию PyPy, используя теги вроде « pypy:latest ».
Настройка рабочей среды Python в Docker
Контейнер Docker представляет собой изолированное окружение. Таким образом, добавлять внутри контейнера виртуальную среду обычно не требуется. Вместо этого, для установки необходимых модулей Python в Docker можно запустить непосредственно систему управления пакетами pip.
Чтобы модифицировать контейнер включением дополнительных пакетов, используется Dockerfile. В приведенном ниже примере в образ Python 3.7.5 добавляются пакеты «parse» и «realpython-reader».
FROM python:3.7.5-slim RUN python -m pip install parse realpython-reader
Этот файл нужно сохранить под именем «Dockerfile». Тег «-slim» в первой строке показывает, что Dockerfile исходит из минимальной установки дистрибутива Debian. Этот тег задаёт существенно меньший размер образа Docker. Недостаток в том, что может потребоваться устанавливать дополнительные инструменты самому.
Помимо этого, в число тегов входят такие, как «-alpine» и «-windowsservercore». Подробную информацию о таких вариациях образа можно найти на Docker Hub.
Примечание. Если нужно использовать внутри контейнера Docker виртуальную среду, есть одно важное предостережение. Каждая команда «RUN» выполняется как отдельный процесс.
Типичная активация виртуальной среды в Dockerfile работать не будет. Вместо этого необходимо активировать виртуальную среду вручную, задав переменные среды «VIRTUAL_ENV» и «PATH»:
FROM python:3.7.5-slim # Настроить и активировать виртуальную среду ENV VIRTUAL_ENV «/venv» RUN python -m venv $VIRTUAL_ENV ENV PATH «$VIRTUAL_ENV/bin:$PATH» # Команды Python будут выполнены в виртуальной среде RUN python -m pip install parse realpython-reader
Чтобы собрать и выполнить свой Dockerfile, необходимо использовать следующие команды:
$ docker build -t rp . [ . Результат выполнения команды сокращён . ] $ docker run -it —rm rp
Образу будет задан тег «rp». Затем он будет использоваться для открытия созданного образа из сеанса интерпретатора REPL. Можно убедиться, что в контейнер установлен пакет «parse».
>>> import parse >>> parse.__version__ ‘1.12.1’
Также можно запускать контейнеры, выполняющие отдельные команды:
$ docker run —rm rp realpython The latest tutorials from Real Python (https://realpython.com/) 0 Run Python Versions in Docker: How to Try the Latest Python Release [ . Результат выполнения команды сокращён . ]
Вместо запуска интерпретатора REPL, внутри контейнера «rp» выполняется команда «realpython». Она выводит список последних руководств, опубликованных на специализированном сайте Real Python.
Запуск Python скрипта в Docker
В этом разделе мы расскажем, как запускать скрипты внутри Docker.
Прежде всего, следует сохранить приводимый пример скрипта у себя на компьютере в файл под названием «headlines.py».
# headlines.py import parse from reader import feed tutorial = feed.get_article(0) headlines = [ r.named[«header»] for r in parse.findall(«n## n», tutorial) ] print(«n».join(headlines))
Сначала этот скрипт скачивает последнее руководство с сайта Real Python. Затем он использует пакет «parse», чтобы найти все заголовки и вывести их на терминал.
Есть два основных способа запускать такие скрипты в контейнере Docker:
- Смонтировать локальный каталог в качестве тома (volume) контейнера Docker.
- Скопировать скрипт в нужный контейнер.
Первый вариант особенно удобен при тестировании, поскольку не нужно собирать образ Docker заново при каждом изменении скрипта. Для монтирования каталога в качестве тома, используйте опцию «-v»:
$ docker run —rm -v /home/realpython/code:/app rp python /app/headlines.py Understanding Python Versions and Docker Using Docker Running Python in a Docker Container Conclusion Further Reading
Если же скрипт будет использован на другом компьютере, нужно скопировать его внутрь контейнера. Это можно сделать, добавив в Dockerfile пару шагов:
FROM python:3.7.5-slim WORKDIR /usr/src/app RUN python -m pip install parse realpython-reader COPY headlines.py . CMD [«python», «headlines.py»]
Опцией «WORKDIR» внутри контейнера задается рабочий каталог, в котором будут выполняться команды. Можно скопировать файл «headlines.py» в этот каталог внутри контейнера, после чего изменить команду по умолчанию на выполнение «headlines.py» с помощью «python».
Соберите образ, как обычно. Остается лишь запустить контейнер:
$ docker build -t rp . [ . Результат выполнения команды сокращён . ] $ docker run —rm rp Understanding Python Versions and Docker Using Docker Running Python in a Docker Container Conclusion Further Reading
Обратите внимание, поскольку в Dockerfile была указана команда «CMD», при запуске контейнера сразу выполняется нужный скрипт.
Подробности о том, как создавать собственные файлы Dockerfile — в описании образа Python на сайте Docker Hub.
Заключение
Это руководство — краткое введение в работу с различными версиями Python при использовании Docker. Оно поможет быстро протестировать код и убедиться, что он совместим с последними версиями Python.
Изучив эту инструкцию, вы сможете:
- Запускать интерпретатор Python REPL при помощи Docker.
- Настраивать среду Python внутри образа Docker.
- Запускать внутри контейнеров Docker скрипты.
Поместить скрипт Python в Docker контейнер — дело пары минут. Теперь опробовать последнюю альфа-версию языка можно сразу после публикации.
Нужна надёжная база для разработки программных продуктов? Выбирайте виртуальные сервера от Eternalhost с технической поддержкой 24/7 и бесплатной защитой от DDoS!
Источник: eternalhost.net