我正在使用 Visual Studio 2008 在 Windows 上使用 Python C API。当我尝试使用PyDate_Check
宏和其他相关宏时,它们会导致访问冲突,因为静态变量 PyDateTimeAPI 为空。此变量使用PyDateTime_IMPORT
需要在使用任何日期时间宏之前调用的宏进行初始化。我在单独的线程上创建新的 Python 子解释器时这样做。
几个问题:
- 为什么宏PyCObject_Import
中的函数PyDateTime_IMPORT
返回 null。我理解 null 返回值是因为找不到模块。但是怎么找不到 datetime 模块呢?可能是因为子解释器中的 sys.path 不正确吗?- 另外,我是否PyDateTime_IMPORT
在正确的位置调用宏,应该是在初始化子解释器之后,还是在初始化 Python 解释器时?
PyDateTime_IMPORT
定义:
#define PyDateTime_IMPORT \
PyDateTimeAPI = (PyDateTime_CAPI*) PyCObject_Import("datetime", \
"datetime_CAPI")`