встраивание ошибки Python при инициализации - PullRequest
2 голосов
/ 22 ноября 2011

когда я запускаю код C для вызова функций python, в Py_Initialize () возникает ошибка: ошибка ImportError: нет модуля с именем site.Я пытался поставить Py_SetProgramName (argv [0]), но это не работает.Вызов cmd: cInterfacePython Test.py умножить 3 2 (например, cInterfacePython)

Ответы [ 2 ]

3 голосов
/ 23 ноября 2011

Мне пришлось немного поработать с PATH env-var и PYTHONPATH, чтобы заставить вещи работать лучше при встраивании.

Py_SetProgramName не имеет значения, в основном это для внутренней справки и т. Д. *

Итак, я предлагаю вам найти, где python установлен локально (это доступно в реестре на компьютерах с Windows), и использовать setenv, чтобы установить PATH и PYTHONPATH на что-то подходящее. Это будет каталог python.exe для PATH (как в вашем комментарии выше), а также установка PYTHONPATH в каталог с вашим собственным кодом python и связанными библиотеками, которые вы запускаете из встроенного exe.

Затем запустите Py_Initialize и посмотрите, происходит ли правильная вещь. Если вам нужно изменить PYTHONPATH после инициализации, измените sys.path с помощью PySys_SetPath ().

1 голос
/ 17 января 2013

У меня была та же проблема (Windows, как с Visual Studio, так и с MinGW / g ++), и я решил ее, добавив в PYTHONPATH путь к site.py. По какой-то причине запуск python.exe был возможен даже без него, и sys.path содержал этот путь (даже когда PYTHONPATH этого не делал), и я мог «импортировать сайт», но Py_Initialize не смог сделать то же самое, что python .exe сделал.

...