Как объединить несколько исходных файлов Python в один файл?

(Предположим, что: время запуска приложения абсолютно необходимо; мое приложение часто запускается; мое приложение работает в среде, в которой импорт выполняется медленнее, чем обычно; необходимо импортировать много файлов; и компиляция в.pyc файлы недоступны.)

Я хотел бы объединить все исходные файлы Python, которые определяют набор модулей, в один новый исходный файл Python.

Я хотел бы, чтобы результат импорта нового файла был таким, как если бы я импортировал один из исходных файлов (который затем импортировал бы еще несколько исходных файлов и т. Д.).

Это возможно?

Вот грубая, ручная симуляция того, что инструмент может производить при подаче исходных файлов для модулей.бар' а также 'Базь, Вы должны запустить такой инструмент до развертывания кода.

__file__ = 'foo.py'

def _module(_name):
    import types
    mod = types.ModuleType(name)
    mod.__file__ = __file__
    sys.modules[module_name] = mod
    return mod

def _bar_module():

    def hello():
        print 'Hello World! BAR'

    mod = create_module('foo.bar')
    mod.hello = hello
    return mod

bar = _bar_module()
del _bar_module

def _baz_module():

    def hello():
        print 'Hello World! BAZ'

    mod = create_module('foo.bar.baz')
    mod.hello = hello
    return mod

baz = _baz_module()
del _baz_module

И теперь вы можете:

from foo.bar import hello
hello()

Этот код нене принимать во внимание такие вещи, как операторы импорта и зависимости. Существует ли какой-либо существующий код, который будет собирать исходные файлы, используя эту или другую технику?

Эта идея очень похожа на инструменты, используемые для сборки и оптимизации файлов JavaScript перед отправкой в браузер, где задержка нескольких HTTP-запросов снижает производительность. В этом случае с Pythons задержка импорта сотен исходных файлов Python при запуске, что очень больно.

Ответы на вопрос(4)

Ваш ответ на вопрос