Python 2.6 и более поздние версии имеют возможность напрямую запускать файл .zip, если файл zip содержит файл __ main __. Py
вверху zip-архива. Я хочу использовать эту функцию для предоставления предварительных версий разрабатываемого мной инструмента, который не потребует от пользователей установки чего-либо, кроме копирования файла .zip на свой диск. Есть ли стандартный способ создать такой zip-файл? Я ищу решение, которое работает с python 2.6 и python 2.7.
В идеале я бы хотел использовать distutils, так как он у меня уже работает, когда я хочу выполнить обычную установку. Есть ли канонический способ использования (или расширения) distutils для создания такого файла .zip?
distutils предоставляет команду sdist
, которая создает исходный дистрибутив, который почти прав, но создает слишком глубокую структуру.
Например, мое исходное дерево выглядит следующим образом:
my_package/
- setup.py
- src/
- __main__.py
- module1/
- module2/
- module3/
Когда я выполняю python setup.py sdist
, я получаю файл .zip со следующей структурой:
my_package-0.1.zip
- my_package-0.1/
- README.txt
- PKG_INFO
- src/
- __main__.py
- module1/
- module2/
- module3/
Это не исполняемый, потому что __ main __. py
не находится на вершине дистрибутива. По сути, мне нужен дистрибутив src, который не включает src
, а только файлы из src
. Это или именно то, что дает мне sdist
, но с дополнительным __ main __. Py
вверху архива.