Развертывание приложения с Python или другим встроенным языком сценариев
Я думаю об использовании Python в качестве встроенного языка сценариев в хобби-проекте, написанном на C++. Я не хотел бы зависеть от отдельно установленного дистрибутива Python. Документация Python, кажется, достаточно ясна в отношении общего использования, но я не смог найти четкого ответа на этот вопрос.
Возможно ли развернуть интерпретатор Python + стандартную библиотеку с моим приложением? Какой другой язык, как Lua, Javascript (Spidermonkey), Ruby и т. Д., Будет лучше для этого использования?
Вот критерии, с которыми я сравниваю разные языки:
- Нет / мало зависимостей от внешних установленных пакетов
- Стандартная библиотека с хорошим набором функций
- Хороший язык:)
- Не приводит к огромному установочному пакету
редактировать:
Я предполагаю, что вопрос должен быть следующим: как мне развернуть мою собственную библиотеку python + стандартную библиотеку с установщиком моей программы, чтобы не имело значения, уже установлена ли платформа на python или нет?
edit2:
Еще одно уточнение. Мне не нужна информация о специфике связывания кода C и Python.
4 ответа
Свяжите свое приложение с библиотекой python (pythonXX.lib в Windows) и добавьте следующее в свою функцию main().
Py_NoSiteFlag = 1; // Disable importing site.py
Py_Initialize(); // Create a python interpreter
Поместите нужные биты стандартной библиотеки python в zip-файл (называемый pythonXX.zip) и поместите его и pythonXX.dll рядом с исполняемым файлом, который вы распространяете. Взгляните на PyZipFile в модуле zip file.
Процесс встраивания полностью документирован: встраивание Python в другое приложение. В документах предлагается несколько уровней, на которых выполняется встраивание, выберите то, что наилучшим образом соответствует вашим требованиям.
Простую демонстрацию встраивания Python можно найти в каталоге Demo / embed / исходного дистрибутива.
Демо здесь, должно быть в состоянии построить из дистрибутива.
- Очень высокий уровень вложения
- Вне очень высокого уровня вложения: обзор
- Чистое вложение
- Расширение встроенного Python
- Встраивание Python в C++
В стандартной библиотеке вы можете выбрать компоненты, которые не несут слишком много зависимостей.
Чтобы расширить ответ с помощью gimel, ничто не мешает вам отправить python.dll, использовать его и установить правильный PYTHONPATH, чтобы использовать собственную установку стандартной библиотеки python. Это просто библиотеки и файлы, и ваш процесс установки может справиться с ними как таковой.
Если вы ищете способ простого развертывания приложения Python, вы можете использовать Py2Exe. Это позволило бы вашему приложению получить все необходимые ему зависимости, не беспокоясь о том, что установлено или не установлено на компьютере пользователя.
[Edit] Если Py2Exe не используется для встроенных приложений, можете ли вы просто попросить установщика проверить наличие соответствующих файлов и загрузить / установить все, что отсутствует? [/ Edit]
[Edit2] Может ли Элмер быть тем, что вы ищете? [/Edit2]