代码之家  ›  专栏  ›  技术社区  ›  wvxvw

构建Python:如何禁用Py_LIMITED_API?

  •  1
  • wvxvw  · 技术社区  · 8 年前

    哪些配置标志/制造标志对此负责?

    如果我不启用这个,我就没有缓冲区API。更不用说把它设为默认值不是个好主意。。。该文档没有提到使用Python的一些API是基于这个编译时设置的。。。

    实际上,它也不是用Python 3.5构建的。我误读了诊断信息。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Szabolcs Dombi    8 年前

    下面是一个 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

    你可以测试 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