问题描述
我想为 CPython 构建一个 C 扩展。传统上,我可以使用 setup.py
文件来完成。但是,出于 PEP 517 中提到的原因,我更喜欢使用 pyproject.toml
的声明性方法。我知道 setuptools
是唯一可以在所有相关平台上构建 C 扩展的构建后端。事实上,除了过时的 distutils
之外,我根本不知道有任何后端能够构建 C 扩展。
在此背景下,常见的 setup.py
如下所示:
from setuptools import setup,Extension
kwargs = dict(
name='mypackage',# more metadata
ext_modules=[
Extension('mypackage.mymodule',['lib/mymodule.c','lib/mypackage.c','lib/myalloc.c'],include_dirs=['lib'],py_limited_api=True)])
setup(**kwargs)
现在,挑战是将上述内容放入一个 pyproject.toml
加上一个 setup.cfg
。
setuptools
文档建议使用这样的 pyproject.toml
:
[build-system]
requires = [
"setuptools >=52.0",'wheel >= 0.36']
build-backend = "setuptools.build_meta"
见
- https://setuptools.readthedocs.io/en/latest/build_meta.html 和
- https://setuptools.readthedocs.io/en/latest/userguide/declarative_config.html#declarative-config
此外,实际的元数据应该进入 setup.cfg
。但是,我没有找到任何关于如何将 ext_modules
kwarg,特别是 Extension()
调用转换为 setup.cfg
语法的解释。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)