問題タブ [pyproject.toml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - PEP 517、つまり setup.py の代わりに pyproject.toml を使用して C 拡張機能をビルドするには?
CPython の C 拡張機能を構築したいと考えています。私は伝統的にsetup.py
ファイルでそれを行うことができました。ただし、PEP 517 に記載されている理由から、pyproject.toml
. setuptools
関連するすべてのプラットフォームで C 拡張機能をビルドできる唯一のビルド バックエンドであることは理解しています。実際、私は、時代遅れの と一緒に C 拡張を構築できるバックエンドをまったく知りませんdistutils
。
この背景に対して、コモンsetup.py
は次のようになります。
pyproject.toml
ここでの課題は、上記をプラス aに入れることsetup.cfg
です。
setuptools
ドキュメントは次のように提案していますpyproject.toml
:
見る
- 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
構文に変換する方法についての説明は見つかりませんでした。
python - 詩とpyproject.tomlを使用してpythonパッケージの開発環境と本番環境の間で依存関係の一貫性を保つ方法
依存関係が開発とテスト用の poetry.lock ファイルに指定されている python パッケージがあります。次に、パッケージをビルドして公開します。これは、本番環境の Docker イメージにインストールされます。しかし、ここに問題があります。公開されたパッケージには、pyproject.toml のtool.poetry.dependenciesセクションで指定された依存関係があり、poetry.lock とは異なる可能性があります。そのため、本番環境がテスト環境とは異なる依存関係になる可能性があります。
一貫性を実現する方法はいくつか考えられますが、どれもあまり良いとは思えません。
pyproject.toml で、poetry.lock と同じセット バージョンを使用します。これにより、公開されたパッケージが dev/test と同じ依存関係を持つことが保証されます。しかし、この時点で、poetry.lock ファイルを保持する意味
poetry install
さえあります。これはうまくいくと思いますが、そもそもなぜpoetry.lockを持っているのか理解できません。プロダクション Docker イメージで、パッケージ リポジトリから poetry.lock ファイルをチェックアウト
poetry install
し、パッケージ自体をインストールする前に実行します。ただし、これにより docker イメージのサイズが大きくなり、リポジトリがプライベートである場合は不要な構成が導入され、全体的に不自然に見えます。
私はPythonのこの部分にかなり慣れていないので、おそらくこれらの1つが「標準」ワークフローです。または、私は何かを完全に見逃しているだけかもしれません。回答ありがとうございます!