Шаг 189.
Python: сборник рецептов. Модули и пакеты. Создание каталога или zip-архива, запускаемых как основной скрипт

    На этом шаге мы рассмотрим способ решения указанной задачи.

Задача

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

Решение

    Если ваше приложение выросло в набор из множества файлов, вы можете поместить его в собственный каталог и добавить в него файл __main__.py. Например, вы можете создать такой каталог:

myapplication/ 
    spam.py 
    bar.py 
    grok.py
    __main__.py

    Если файл __main__.py присутствует, вы просто запускаете интерпретатор Python в каталоге высшего уровня:

bash % python3 myapplication

    Интерпретатор выполнит __main__.py как главную программу.

    Этот прием также работает, если вы упаковали весь ваш код в zip-архив. Например:

bash % ls 
spam.py 
bar.py 
grok.py
__main__.py
bash % zip -r myapp.zip *.py
bash % python3 myapp.zip
... output from __main__.py ...


Обсуждение

    Создание каталога или zip-архива и добавление файла __main__.py - один из возможных путей для упаковки крупного Python-приложения. Он немного отличается от пакета тем, что код не предназначен для использования в качестве стандартного библиотечного модуля, установленного в библиотеку Python. Вместо этого мы получаем просто набор кода, который вы передаете кому-либо, и этот кто-то может запускать эту программу.

    Поскольку каталоги и zip-архивы немного отличаются от обычных файлов, вы также можете пожелать добавить вспомогательный скрипт командной оболочки, чтобы облегчить запуск. Например, если код лежит в файле myapp.zip, вы можете написать такой скрипт:

#!/usr/bin/env python3 /usr/local/bin/myapp.zip

    На следующем шаге мы рассмотрим чтение файлов с данными внутри пакета.




Предыдущий шаг Содержание Следующий шаг