CPython の C 拡張機能を構築したいと考えています。私は伝統的にsetup.py
ファイルでそれを行うことができました。ただし、PEP 517 に記載されている理由から、pyproject.toml
. setuptools
関連するすべてのプラットフォームで C 拡張機能をビルドできる唯一のビルド バックエンドであることは理解しています。実際、私は、時代遅れの と一緒に C 拡張を構築できるバックエンドをまったく知りませんdistutils
。
この背景に対して、コモン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
ここでの課題は、上記をプラス aに入れること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
構文に変換する方法についての説明は見つかりませんでした。