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-*"]
詳細については、ワークスペースガイドを参照してください。