Я написал код для определения нового типа в расширении Python C (MyStatus). Я написал код C, чтобы определить распределение, освобождение и т. Д., Как указано в этом page.Использование нового типа в Python C Extension
Я смог скомпилировать модуль и использовать его с python.
Теперь я пытаюсь использовать этот новый тип в другом расширении Python C (TestStatus) . Мое требование - мне нужно иметь только один .so для этого. Я не хочу использовать MyStatus непосредственно из кода Python. Я буду импортировать TestStatus в свой код, и я хочу инициализировать MyStatus из моего расширения C, написанного для TestStatus.
Я написал код, как это для TestStatus
static PyObject * TestStatus_checkPyObject *self, PyObject *args)
{
PyObject * mystatus = NULL;
const char *command;
/* Call the class object. */
mystatus = PyObject_CallObject((PyObject *) &MyStatusType, NULL);
return mystatus;
}
PyMODINIT_FUNC initTestStatus(void)
{
(void) Py_InitModule("TestStatus", TestMethods);
initMyStatus();//This is available in the C code written for MyStatus
}
Я был в состоянии создать так как то, что я уже упоминал в коде. Но я застрял на настройке переменных для MyStatus, который является целым числом, и char * (PyObject *) Может кто-то пролить свет на это, например, правильно ли мой подход и как инициализировать и использовать MyStatus из TestStatus с аргументами.
Я пытаюсь это с Python 2.6.6 на RHEL 6.3
В MyStatus у меня есть 2 переменные
typedef struct {
PyObject_HEAD
int mStatus;
PyObject *mErrorString;
} MyStatus;
мне нужно инициализировать то же самое от TestStatus.
Вы застряли в настройке «переменных», какие переменные? вы можете быть более конкретным, что поможет. Почему требуется иметь только файл '.so'? Будет ли это работать, если вы поместите код обоих модулей в один файл? - Извините, но я не бросил проблему, так что трудно пролить свет на нее. – dastrobu
Я редактировал сообщение, чтобы добавить информацию об переменных. – Raghuram