Встраивание Python в C: Проблемы с импортом локальных модулей - PullRequest
5 голосов
/ 27 мая 2010

Мне нужно запустить скрипты Python в приложении на основе Си. Я могу импортировать стандартные модули из библиотек Python, т.е.

PyRun_SimpleString("import sys")

Но когда я пытаюсь импортировать локальный модуль can

PyRun_SimpleString("import can")

возвращает сообщение об ошибке:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named can

Когда я набираю команду import can в IPython, система может найти ее.

Как связать мое приложение с банкой? Я попытался установить PYTHONPATH для моего рабочего каталога.

Ответы [ 2 ]

9 голосов
/ 27 мая 2010

Встраивание библиотеки Python не добавляет '' к sys.path, как это делает интерактивный интерпретатор. Используйте PySys_SetPath(), чтобы добавить соответствующий каталог.

О, эй, посмотри, что я нашел .

0 голосов
/ 07 марта 2015

Я нашел, что это работает намного надежнее,

PyObject *sys = PyImport_ImportModule("sys");
PyObject *path = PyObject_GetAttrString(sys, "path");
PyList_Append(path, PyUnicode_FromString("."));
...