コンテンツへスキップ

Pythonプロジェクト (pyproject.toml)

Ryeは、pyproject.tomlファイルでの多くの独自設定を避けようとしますが、少しは必要です。以下は、Ryeが期待する最も重要なキーです。

project.dependencies

このキーは、依存関係を管理するために使用されます。これらは、通常のpyproject.tomlファイルから期待されるとおりに機能し、実際、Ryeはこれについて何も変更しません。ただし、Ryeはrye addおよびrye removeコマンドを使用してこれらのエントリを変更できます。

[project]
dependencies = [
    "mkdocs~=1.4.3",
    "mkdocs-material~=9.1.12",
    "pymdown-extensions~=9.11",
]

project.scripts

このキーは、sync中に仮想環境に生成およびインストールされるスクリプトを指定します。これらのスクリプトは、構成されたエントリポイントを呼び出します。

[project.scripts]
my-hello-script = 'hello:main'
この構成は、helloモジュールのmain関数を呼び出すmy-hello-scriptというスクリプトを生成します。

スクリプトは、rye syncを使用してインストールし、rye runを使用して実行できます。

$ rye sync
$ rye run my-hello-script
Hello from hello!

tool.rye.dev-dependencies

これは、project.dependenciesと同様に機能しますが、開発専用の依存関係を保持します。これらは、rye add --devを介してここへ自動的に追加できます。

[tool.rye]
dev-dependencies = ["black~=23.3.0"]

開発依存関係は、sync--no-devが渡されない限り、自動的にインストールされます。

tool.rye.excluded-dependencies

これは、間接的な依存関係としてプルインされた場合でも、決してインストールされない依存関係を含む特別なキーです。これらは、rye add --excludedを使用してここへ自動的に追加されます。

[tool.rye]
excluded-dependencies = ["cffi"]

tool.rye.universal

0.36.0で新しく追加

このフラグが有効になっている場合、プロジェクトまたはワークスペース内のすべてのlockおよびsync操作は、--universalが渡されたかのように動作します。これは、依存関係リゾルバーが、現在のプラットフォームに固有の解決策ではなく、すべてのプラットフォーム、オペレーティングシステム、およびアーキテクチャで有効な解決策を生成しようとすることを意味します。

[tool.rye]
universal = true

tool.rye.generate-hashes

0.35.0で新しく追加

このフラグが有効になっている場合、プロジェクトまたはワークスペース内のすべてのlockおよびsync操作は、--generate-hashesが渡されたかのように動作します。これは、すべてのロックファイルのすべての依存関係にハッシュが含まれることを意味します。

[tool.rye]
generate-hashes = true

tool.rye.lock-with-sources

0.18.0で新しく追加

このフラグが有効になっている場合、プロジェクトまたはワークスペース内のすべてのlockおよびsync操作は、--with-sourcesが渡されたかのように動作します。これは、すべてのロックファイルに完全なソース参照が含まれることを意味します。ソースにURLに資格情報が含まれている場合、資格情報を含むロックファイルを作成できることに注意してください。

[tool.rye]
lock-with-sources = true

tool.rye.managed

0.3.0で新しく追加

このキーは、このプロジェクトがRyeによって管理されることをRyeに伝えます。このキーは主に、仮想環境の自動作成の一部に影響を与えます。たとえば、Ryeは、このフラグなしでシムを使用する場合、仮想環境を初期化しようとしません。グローバル構成で強制的に有効にできます。

[tool.rye]
managed = true

tool.rye.virtual

0.20.0で新しく追加

このキーがtrueに設定されている場合、プロジェクトは仮想プロジェクトとして宣言されます。これは、パッケージ自体はインストールされず、依存関係のみがインストールされる特別なモードです。これは、たとえば、Pythonプロジェクトを作成していないが、Pythonソフトウェアに依存している場合に役立ちます。例として、これを使用してPythonで記述されたソフトウェアをインストールできます。このキーは、rye init--virtualフラグ付きで呼び出されたときにtrueに設定されます。

[tool.rye]
virtual = true

詳細については、仮想プロジェクトガイドを参照してください。

tool.rye.sources

これは、依存関係の検索に使用する必要があるソースを含むテーブルの配列です。これにより、PyPI以外のインデックスを使用できます。これらのソースは、同じ構文でメインのconfig.toml構成ファイルで構成することもできます。

[[tool.rye.sources]]
name = "default"
url = "http://pypi.org/simple/"

ソースの構成の詳細については、依存関係ソースを参照してください。

tool.rye.scripts

このキーは、rye runを介して公開されるカスタムスクリプトを登録するために使用できます。各キーはスクリプトであり、各値はそのスクリプトの構成です。通常、値はさまざまなキーを持つオブジェクトであり、最も重要なキーは、実行するコマンドを保持するcmdです。ただし、cmdのみが設定されている場合、オブジェクトはオプションです。cmd自体は、文字列または引数の配列のいずれかに設定できます。

[tool.rye.scripts]
# These three options are equivalent:
devserver = "flask run --app ./hello.py --debug"
devserver-alt = ["flask", "run", "--app", "./hello.py", "--debug"]
devserver-explicit = { cmd = "flask run --app ./hello.py --debug" }

スクリプトには、次のキーが可能です。

cmd

実行するコマンド。これは、stringまたは引数のarrayのいずれかです。どちらの場合も、シェル固有の補間は使用できません。コマンドは、仮想環境で利用可能な場合は、仮想環境内のいずれかのツールを呼び出します。

[tool.rye.scripts]
devserver = { cmd = "flask run --app ./hello.py --debug" }
http = { cmd = ["python", "-mhttp.server", "8000"] }

env

このキーは、スクリプトで環境変数を提供するために使用できます。

[tool.rye.scripts]
devserver = { cmd = "flask run --debug", env = { FLASK_APP = "./hello.py" } }

env-file

0.30.0で新しく追加

これはenvに似ていますが、環境変数を直接設定するのではなく、ロードする必要のあるファイル(pyproject.tomlを基準とした)を指します。

[tool.rye.scripts]
devserver = { cmd = "flask run --debug", env-file = ".dev.env" }

chain

これは、コマンドにcmdの代わりに設定できる特別なキーで、コマンドが他の複数のコマンドを呼び出すようにします。各コマンドは、1つずつ順番に実行されます。いずれかのコマンドが失敗すると、残りのコマンドは実行されず、チェーンは失敗します。

[tool.rye.scripts]
lint = { chain = ["lint:black", "lint:flake8" ] }
"lint:black" = "black --check src"
"lint:flake8" = "flake8 src"

call

これは、コマンドにcmdの代わりに設定できる特別なキーで、コマンドがpython関数またはモジュールを呼び出すようにします。形式は、次の3つの形式のいずれかです。

  • <module_name>: python -m <module_name>と同等
  • <module_name>:<function_name>: <module_name>から<function_name>を実行し、戻り値で終了します
  • <module_name>:<function_name>(<args>): 特定の引数を関数に渡します

コマンドラインで提供された追加の引数は、sys.argvで渡されます。

[tool.rye.scripts]
serve = { call = "http.server" }
help = { call = "builtins:help" }
hello-world = { call = "builtins:print('Hello World!')" }

tool.rye.workspace

そのキーを持つテーブルが保存されると、プロジェクトはワークスペースルートとして宣言されます。デフォルトでは、サブフォルダーで検出されたすべてのPythonプロジェクトは、このワークスペースのメンバーになり、仮想環境を共有します。オプションで、membersキー(配列)を使用してこれらのメンバーを制限できます。そのリストでは、グロブを使用できます。ルートプロジェクト自体は常にメンバーです。

[tool.rye.workspace]
members = ["mylib-*"]

詳細については、ワークスペースガイドを参照してください。