同期とロック
Ryeは依存関係の管理にuv
を使用します。
依存関係をダウンロードするために、ryeは2つの「ロックファイル」(requirements.lock
とrequirements-dev.lock
と呼ばれます)を作成します。これらは実際のロックファイルではありませんが、より良い解決策が実装されるまで同様の目的を果たします。
rye sync
が呼び出されるたびに、ロックファイルと仮想環境が更新されます。ロックファイルのみを更新する場合は、rye lock
を使用できます。
ロック
ロック時には、ロックの動作を変更するためいくつかのオプションを指定できます。これらのフラグはすべてrye sync
でも利用可能です。
--update
/ --update-all
特定の、またはすべての要件を最新のバージョンに更新します。このフラグがない場合、依存関係は必要な場合にのみ更新されます。
rye lock --update-all
--features
/ --all-features
Pythonパッケージには追加の依存関係を含めることができます。デフォルトでは、インストールされるローカルパッケージはデフォルトの機能のみでインストールされます。たとえば、追加の依存関係がある場合、機能が有効になっている場合にのみインストールされます。
rye add --optional=web flask
rye lock --features=web
ワークスペースを使用する場合、パッケージ名の前にスラッシュを付ける必要があります。
rye lock --features=package-name/feature-name
--features
パラメータは複数回渡すことができ、機能はカンマで区切ることもできます。すべての機能をオンにするには、--all-features
パラメータを使用できます。
rye lock --all-features
--pre
デフォルトでは、更新とバージョン解決はパッケージのプレリリースを考慮しません。これらを含めたい場合は、--pre
を渡します。
rye lock Flask --pre
--with-sources
0.18.0で新規
デフォルトでは(pyproject.toml
のtool.rye.lock-with-sources
構成キーがtrue
に設定されていない限り)、ロックファイルはソース参照なしで生成されます。これは、カスタムソースが使用されている場合、--find-links
などのパラメーターを手動で渡さない限り、ロックファイルをuv
またはpip
経由でインストールできないことを意味します。これは、ロックファイルがDockerイメージのビルドに使用される場合に特に役立ちます。
このフラグが渡されると、ロックファイルは--index-url
、--extra-index-url
または--find-links
への参照とともに生成されます。
rye lock --with-sources
同期
同期は、lock
と同じパラメーターを受け取り、さらにいくつかのパラメーターを受け取ります。同期は通常、最初にlock
が行うことを実行し、次にロックファイルを使用して仮想環境を更新します。
--no-lock
ロックステップが自動的に実行されるのを防ぐには、--no-lock
を渡します。
rye sync --no-lock
--no-dev
開発用ロックファイル(requirements-dev.lock
)ではなく、本番用ロックファイル(requirements.lock
)に基づいてのみ同期します。
rye sync --no-dev
プラットフォーム互換性
デフォルトでは、ロックファイルは生成されたプラットフォームに依存します。
たとえば、プロジェクトがプラットフォーム固有のパッケージに依存しており、Windowsでロックファイルを生成する場合、これらのロックファイルにはWindows固有のプロジェクトが含まれます。したがって、LinuxやmacOSなどの他のプラットフォームとの互換性はありません。
クロスプラットフォームのロックファイルを生成するには、次の内容をpyproject.toml
に追加して、uvのuniversal
設定を有効にできます。
[tool.rye]
universal = true