以下のパッケージ構造で
.
├── my_package
│ └── __init__.py
├── setup.cfg
└── setup.py
の内容 setup.py
from setuptools import setup
setup()
の内容 setup.cfg
[metadata]
name = my_package
version = 0.1
[options]
packages = find:
my_package
このようにホイールまたはソース配布を構築できます
pip wheel --no-deps -w dist .
# generates file ./dist/my_package-0.1-py3-none-any.whl
python setup.py sdist
# generates file ./dist/my_package-0.1.tar.gz
しかし、setuptoolsのメンテナーによると、宣言型ビルド構成が理想的であり、命令型ビルドを使用することはコードの匂いになるでしょう。交換してください、私たちはそうsetup.py
でpyproject.toml
:
.
├── my_package
│ └── __init__.py
├── setup.cfg
└── pyproject.toml
の内容 pyproject.toml
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "wheel"]
また、以前と同じ方法でホイールを構築できますが、機能します。しかし、sdistは機能しません。
python: can't open file 'setup.py': [Errno 2] No such file or directory
では、実際にsetuptoolsを使用して.tar.gzファイルをどのように構築する必要がありますか?sdistを作成するためのユーザー向けツールは何ですか?ビルドバックエンドを変更したくありません。他のパッケージツールはすべて独自のビルドエントリポイントを記述しているように見えますが、メタデータで宣言型ビルドシステムを定義することの要点は、ビルドシステムを実際に使用する必要がなく、それぞれについて学習することであると思いました別のパッケージツールが呼び出されるか、インタプリタに移動してPython APIを手動で呼び出す必要があることを想定しています。しかし、ビルドシステム要件のPEPは2年以上前のものです。ここに明らかなものがないのですか?
setup.py
ファイルを使用せずにソース配布を構築するにはどうすればよいですか?
pep517.build
フリット、詩、ハッチなどの生産性の高いツールがある場合に、一時的な松葉杖だけを実験として使用することに焦点を当てるのはなぜですか?