Развертывание приложения с помощью 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]