Самый простой способ - создать ZIP-файл, содержащий весь необходимый вам код Python, и добавить его в переменную окружения PYTHONPATH вашего процесса (через setenv()
) до инициализации встроенного интерпретатора Python.Использование библиотек .pyd можно сделать аналогично, добавив их в тот же каталог, что и .zip, а также включив каталог в PYTHONPATH.
Использование вызова setenv()
может вызвать проблемы в Windows, если выМикшируем c-runtime версии.Я потратил много мучительных часов на то, что setenv()
устанавливает только переменные окружения для версии c-runtime, с которой поставляется ваш компилятор.Так, если, например, Python был собран с VC ++ 2005, а ваш компилятор - VC ++ 2008, вам нужно будет использовать альтернативный механизм.Просмотр исходных текстов для py2exe и / или PyInstaller может предоставить вам лучшее решение (поскольку вы делаете по сути то же самое, что и эти инструменты), но простой альтернативой является "обмануть"msgstr "с помощью PyRun_SimpleString()
установить путь поиска модуля из самого Python.
snprintf(buff, "import sys\nsys.path.append("%s")\n", py_zip_filename)
PyRun_SimpleString(buff)