Развертывание приложения с помощью Python или другого встроенного языка сценариев
Я думаю об использовании Python в качестве встроенного языка сценариев в проекте хобби, написанном на С++. Я бы не хотел зависеть от отдельно установленного дистрибутива Python. Документация на Python кажется вполне понятной для общего использования, но я не мог найти четкого ответа на этот вопрос.
Возможно ли развертывание интерпретатора Python + стандартной библиотеки с моим приложением? Может ли какой-нибудь другой язык, такой как Lua, Javascript (Spidermonkey), Ruby и т.д., Быть лучше для этого использования?
Здесь критерии, которые я взвешиваю на разных языках:
- Нет/немного зависимостей от внешних пакетов
- Стандартная библиотека с хорошим набором функций
- Хороший язык:)
- Не приводит к созданию огромного пакета установки
изменить:
Я думаю, вопрос должен быть:
Как развернуть мою собственную библиотеку python + стандартную библиотеку с установщиком моей программы, так что неважно, установлена ли на платформе уже установленный python?
edit2:
Еще одно разъяснение. Мне не нужна информация об особенностях связывания кода C и Python.
Ответы
Ответ 1
Свяжите свое приложение с библиотекой 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 в zipfile-модуле.
Ответ 2
Процесс внедрения полностью документирован: Внедрение Python в другое приложение.
В документах предлагается несколько уровней, на которых выполняется внедрение, выберите все, что наилучшим образом соответствует вашим требованиям.
Простую демонстрацию внедрения Python можно найти в каталоге Demo/embed/исходного дистрибутива.
Демо здесь, должно быть в состоянии строить из дистрибутива.
- Внедрение очень высокого уровня
- Вне Вложения Очень Высокого Уровня: Обзор
- Чистое вложение
- Расширение встроенного Python
- Вложение Python в С++
В стандартной библиотеке вы можете выбрать компоненты, не содержащие слишком много зависимостей.
Ответ 3
Чтобы продлить ответ на gimel, вам нечего мешать вам отправлять python.dll, используя его, и устанавливать правильный PYTHONPATH, чтобы использовать вашу собственную установку стандартной библиотеки python. Это просто библиотеки и файлы, и ваш процесс установки может справиться с ними как таковой.
Ответ 4
Если вы ищете способ простого развертывания приложения Python, вы можете использовать Py2Exe. Это позволит вашему приложению использовать все зависимости, не беспокоясь о том, что еще не установлено на компьютере пользователя.
[Edit] Если Py2Exe не работает для встроенных приложений, не могли бы вы просто попросить установщика проверить файлы с соответствующими файлами и загрузить/установить что-нибудь, что отсутствует? [/Edit]
[Edit2] Может ли Elmer быть тем, что вы ищете? [/Edit2]