哪些配置标志/制造标志对此负责?
如果我不启用这个,我就没有缓冲区API。更不用说把它设为默认值不是个好主意。。。该文档没有提到使用Python的一些API是基于这个编译时设置的。。。
实际上,它也不是用Python 3.5构建的。我误读了诊断信息。
下面是一个 setup.py 将编译 foo.cpp 拥有 py_limited_api 开始 False :
setup.py
foo.cpp
py_limited_api
False
from setuptools import setup, Extension setup( name='foo', ext_modules=[Extension('foo', ['foo.cpp'], py_limited_api=False)], )
确保没有 #define Py_LIMITED_API ... 在包括 Python.h
#define Py_LIMITED_API ...
Python.h
你可以测试 Py_LIMITED_API 声明如下:
Py_LIMITED_API
#ifdef Py_LIMITED_API #error Py_LIMITED_API is set #endif #include <Python.h> ...
编辑:
您可以通过运行以下命令来编译模块:
python setup.py build_ext --inplace
或者通过创建轮子:
python setup.py bdist_wheel