Я использую Python C API в Windows, используя Visual Studio 2008. Когда я пытаюсь использовать макрос PyDate_Check
и другие связанные макросы, они вызывают нарушение доступа, поскольку статическая переменная PyDateTimeAPI имеет значение null. Эта переменная инициализируется с помощью макроса PyDateTime_IMPORT
, который необходимо вызвать перед использованием любых макросов даты и времени. Я делаю это при создании нового суб-интерпретатора Python в отдельном потоке.
Пара вопросов :
- Почему функция PyCObject_Import
в макросе PyDateTime_IMPORT
возвращает ноль. Я понимаю, нулевое возвращаемое значение, потому что модуль не может быть найден. Но как модуль datetime не может быть найден? Может ли это быть из-за неправильного sys.path в суб-интерпретаторе?
- Кроме того, я вызываю макрос PyDateTime_IMPORT
в правильном месте, это должно произойти сразу после инициализации суб-интерпретатора или при инициализации интерпретатора Python?
PyDateTime_IMPORT
определение:
#define PyDateTime_IMPORT \
PyDateTimeAPI = (PyDateTime_CAPI*) PyCObject_Import("datetime", \
"datetime_CAPI")`