когда я запускаю код C для вызова функций python, возникает ошибка Py_Initialize(). Ошибка ImportError: нет модуля с именем site. Я пытался поставить Py_SetProgramName(argv[0]), но это не работает. Вызов cmd — это cInterfacePython Test.py, умноженный на 3 2 (exe — это cInterfacePython)
встраивание ошибки python при инициализации
Ответы (2)
Мне пришлось немного повозиться с PATH env-var, а также с PYTHONPATH, чтобы при встраивании все работало лучше.
Py_SetProgramName не важен, это в основном для внутренней справки и т.д.
Итак, я предлагаю вам найти, где python установлен локально (это доступно в реестре на компьютерах с Windows), и использовать setenv
, чтобы установить PATH и PYTHONPATH на что-то подходящее. Это будет каталог python.exe для PATH (как в вашем комментарии выше), а также установка PYTHONPATH в каталог с вашим собственным кодом python и связанными библиотеками, которые вы запускаете из встроенного exe.
Затем запустите Py_Initialize и посмотрите, все ли в порядке. Если вам нужно изменить PYTHONPATH после инициализации, измените sys.path с помощью PySys_SetPath().
У меня была та же проблема (Windows, как с Visual Studio, так и с MinGW/g++), и я решил ее, добавив в PYTHONPATH путь к site.py. По какой-то причине запуск python.exe был возможен и без него, и sys.path действительно содержал этот путь (даже когда PYTHONPATH не содержал), и я мог «импортировать сайт», но Py_Initialize не мог делать то же самое, что python .exe сделал.
Py_Initialize()
, то я бы просто передал проблему тому, кто управляет машиной. - person David Heffernan   schedule 23.11.2011