Как собрать модули Python в один [исполняемый] Zip-архив? - PullRequest
0 голосов
/ 03 января 2019

Прошло много времени с тех пор, как я написал какой-то серьезный код на Python, так что я уверен, что просто упустил что-то глупое ...

Я написал несколько модулей и хотел бы объединить их в один исполняемый zip-архив. Кажется, я помню, что это был довольно тривиальный процесс, и думал, что он у меня работает, но после нескольких добавлений, переименования каталогов / файлов и т. Д. Я не могу разобраться с ошибками.

При изучении вопроса я наткнулся на несколько обращений для упаковки с пресловутым Cheeseshop (pip), py2exe, py2app и т. Д. Однако я не собираюсь распространять свой код в Интернете и не обязательно нужно связывать всю среду Python.

Какой самый простой и простой способ объединения моих модулей в один кроссплатформенный исполняемый файл (в основном, в среде unix / linux / mac)?

Пример структуры:

ProjectRoot
    |_ sub_dir
        |_ __init__.py # empty file
        |_ module1.py
        |_ module2.py
    |_ __main__.py

Содержимое __main__.py:

import sub_dir.module1 as sss
sss.main()

Я попытался создать zip-архив ProjectRoot, но при выполнении архива я получаю следующее:

$ python ./ProjectRoot.zip
/usr/local/opt/python/bin/python3.7: can't find '__main__' module in './ProjectRoot.zip'    

Что я делаю не так?

1 Ответ

0 голосов
/ 03 января 2019

Попробуйте использовать модуль zipapp:

$ python -m zipapp myapp -m "myapp:main"
$ python myapp.pyz

https://docs.python.org/3/library/zipapp.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...