このプロジェクトについて
nepentheは、大規模な共有conda/PyPI環境を構築、バージョン管理、配布するためのツールです。その目標は、チームが環境を一度記述し、rattlerで一度解決し、結果をポータブルなロックファイルに凍結し、そのロックを任意のストレージバックエンド上のバージョン管理されたレジストリに公開することで、すべてのマシンが再解決せずにまったく同じ環境をインストールできるようにすることです。
READMEで説明されている主な機能は次のとおりです。
- マニフェストベースの構成: 散在する要件ファイルではなく、宣言的な環境マニフェスト。
- rattler(純Rust)によるネイティブ解決: Pythonインタープリタのオーバーヘッドを回避。
- ポータブルロック: 構造上再現可能なマルチプラットフォームのrattler_lockファイル。
- クロスプラットフォーム解決: 単一ホストからlinux-64、osx-arm64、win-64を1つのマルチプラットフォームロックに解決。
- プラグイン可能なバックエンド: file://、s3://、https://への仕様の読み書き。チャネルは内部Artifactoryなどの任意のサーバーを指すことが可能。
- バージョン管理されたレジストリ: 不変のコンテンツアドレスロックによる環境ごとの独立したバージョン管理。
- condaなしのインストール: rattlerを使用してプレフィックスにロックをリンク。conda/mamba/micromambaは不要。
- conda互換性: 任意のロックをconda create --fileで使用可能な@EXPLICIT仕様としてエクスポート。
- セキュリティ体制: 資格情報は使用時に注入され、アーティファクトに書き込まれない。
このプロジェクトは、プロデューサーからコンシューマーへのライフサイクルをカバーしています: マニフェストを構成し、マルチプラットフォームロックを解決して凍結し、バージョン管理されたレジストリに公開し、CLIまたはPythonからcondaなしでインストールします。また、エアギャップ環境向けのパック/アンパックバンドルと、プロジェクトの依存関係を消費する環境と同期させるpyproject.toml統合についても言及しています。
READMEのワークフロー例: YAMLマニフェストがプロジェクト名、チャネル、プラットフォーム、Pythonバージョン、ルート依存関係を宣言し、ビルドコマンドが完全にピン留めされたロックファイルを生成し、エクスポートコマンドがロックを@EXPLICIT conda仕様としてレンダリングし、インストールは仕様からのcondaまたはロックからのnepentheのいずれかで実行できます。CLIは単一のマルチコールバイナリで、npとnpbはnepentheへのシンボリックリンクであり、npbはビルドサブコマンドのショートカットとして機能します。Pythonバインディングは、ビルド、作成、アクティブ化操作のCLIをミラーリングします。pyproject.tomlセクションは、環境名、レジストリ、バージョンをピン留めでき、syncおよびcheckコマンドで参照環境をインストールし、プロジェクトの依存関係が互換性があることを検証します。
READMEは、nepentheをプロジェクトごとのロックファイル(pixi、uv)や再解決されたマニフェスト(environment.yml)とは異なるものとして位置付けています: 多くのリポジトリが消費する共有環境を構築および配布し、バージョン管理され不変です。ドキュメントは、動機、概念、マニフェスト、チャネルとArtifactory、レジストリ、インストール、プロジェクトでの消費、パッキング、Python APIとバックエンド、およびアーキテクチャとソースからのビルドに関するコントリビューター向け資料をカバーするwikiに編成されています。プロジェクトはApache-2.0ライセンスです。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.