В 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
в верхней части архива.