как использовать distutils для создания исполняемого файла .zip?

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 вверху архива.

6
задан Bryan Oakley 31 May 2011 в 22:01
поделиться