Не подключается модуль через Python c-api

105
03 августа 2019, 18:00

Есть Python код:

test.py:

from test2 import Say
Say()

test2.py:

def Say():
    print("Mew")

И есть c++ код:

#include <Python.h>
int main(){
Py_Initialize(); // инициализация интерпретатора
 PyObject *obj = Py_BuildValue("s", "test.py");
 FILE *file = _Py_fopen_obj(obj, "r+");
 if(file != NULL) {
     PyRun_SimpleFile(file, "test.py");
 }
Py_Finalize();
return 0;
}

Компилируется, но при попытке исполнения выдает следующие

File "test.py", line 1, in <module>
    from test2 import Say
ModuleNotFoundError: No module named 'test2'

Что я делаю не так, заранее спасибо!

Answer 1

Дело в том, что когда интерпретатор запускается из C-кода, в sys.path не добавляется текущая директория. Это можно сделать вручную, например так:

PyObject *sysPath = PySys_GetObject("path");
PyList_Append(sysPath, PyUnicode_FromString("."));
READ ALSO
Базовый класс Array и производные классы SortArray и XorArray

Базовый класс Array и производные классы SortArray и XorArray

Помогите закончить программу пожалуйстаНеобходимо создать базовый класс Array с виртуальными методами сложения и поэлементной обработки...

129