Пакетирование нескольких модулей Python - PullRequest
2 голосов
/ 21 февраля 2011

У меня есть несколько модулей Python, для некоторых из них требуется более 20 других.У меня вопрос, есть ли инструмент, который помогает мне связать некоторые модули Python в один большой файл.

Вот простой пример:

HelloWorld.py:

import MyPrinter

MyPrinter.displayMessage("hello")

MyPrinter.py:

def displayMessage(msg):
    print msg

следует преобразовать в один файл, который содержит:

def displayMessage(msg):
    print msg

displayMessage("hello")

Хорошо, я знаю, что этот пример немного плох, но я надеюсь, чтокто-то понимает, о чем я, и может мне помочь.И еще одно замечание: я говорю об огромных скриптах с очень большим импортом, если бы они были меньше, я мог бы сделать это сам.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 21 февраля 2011

Если вы используете Python 2.6 или более позднюю версию, вы можете упаковать сценарии в zip-файл, добавить __main__.py и запустить zip-файл напрямую.

Если вы действительно хотите свернуть все в один файл, я думаю, вам придется написать его самостоятельно. Механизм преобразования исходного кода в lib2to3 может помочь с задачей.

1 голос
/ 21 февраля 2011

Вы не можете и не должны «конвертировать их в один файл».

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

Здесь есть довольно хорошее руководство по пакетам: http://diveintopython3.org/packaging.html

И вы должны прочитать документы здесь: http://docs.python.org/library/distutils.html

0 голосов
/ 21 февраля 2011

Pip поддерживает связывание. Это формат установки, который будет распакован в несколько файлов.Все остальное было бы плохой идеей, так как это нарушило бы импорт и метаданные для каждого модуля.

...