Объединение файлов модулей в Python - PullRequest
6 голосов
/ 09 июля 2009

Есть ли способ собрать файлы Python, сродни JAR в Java? Мне нужен способ упаковки набора классов и функций Python, но в отличие от стандартного модуля, я бы хотел, чтобы он был в одном файле.

Ответы [ 5 ]

9 голосов
/ 07 июля 2011

После поиска решения той же проблемы я написал простой инструмент, который объединяет несколько файлов .py в один: PyBreeder

Он будет работать только с чисто Python-модулями и может потребовать некоторых проб и ошибок для правильного порядка модулей, но это очень удобно, когда вы хотите развернуть скрипт с некоторыми зависимостями в виде одного .py. Комментарии / патчи / критика приветствуются!

7 голосов
/ 09 июля 2009

Посмотрите на Яйца Питона: http://peak.telecommunity.com/DevCenter/PythonEggs

Или вы можете использовать обычные молнии: http://docs.python.org/library/zipimport.html

2 голосов
/ 09 июля 2009

Самый простой подход - просто использовать zip. Файл jar в Java - это zip-файл, содержащий некоторые метаданные, такие как манифест; но вам не обязательно нужна метатада - Python может импортировать из zip-файла, если вы поместите этот zip-файл в sys.path, так же, как это делается для любого каталога. В zipfile у вас могут быть исходные коды (файлы .py), но тогда Python должен будет компилировать их «на лету» каждый раз, когда процесс впервые импортирует их; или вы можете иметь файлы байт-кода (.pyc или .pyo), но тогда вы ограничены конкретной версией Python и либо отсутствием (для .pyc), либо наличием (для .pyo) флага -O (или -OO ).

Как указывалось в других ответах, существуют форматы, такие как .egg, которые также обогащают zip-файл метатадой в Python, например Java .jar, но в конкретном случае использования, который дает вам дополнительное значение по сравнению с простым zip-файлом решение за вами

1 голос
/ 09 июля 2009

Вы можете создавать zip-файлы, содержащие код Python, и импортировать их из zip-файлов, используя zipimport . Система, такая как PyInstaller (кроссплатформенная) или py2exe (Windows), сделает все это за вас.

0 голосов
/ 09 июля 2009

Прочтите PEP для получения информации.
Также Импорт модулей из Zip .

...