1774272595
2026-03-23 12:37:00
Rust で書かれた非常に高速な Python パッケージおよびプロジェクト マネージャー。
フィン は、上に構築された独立した Python パッケージ マネージャーです。 紫外線の基盤からテレメトリが削除され、新機能が追加され、長年のバグが修正されました。見る
マニフェスト.md ストーリー全体については。
- 単一のツールで交換可能
pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv、など。 - 10 ~ 100 倍高速
pip。 - 提供します 包括的なプロジェクト管理、ユニバーサルロックファイルを使用します。
- 内蔵 タスクランナー — プロジェクト タスクを定義して実行する
pyproject.toml。 - 仮想環境をアクティブ化します と
fyn shell。 - 依存関係をアップグレードする 1つのコマンドで
fyn upgrade。 - スクリプトを実行します、インライン依存関係メタデータのサポート。
- インストールと管理 Python のバージョン。
- 実行とインストール Python パッケージとして公開されたツール。
- 含まれています pip互換インターフェース 使い慣れた CLI を使用してパフォーマンスを向上させることができます。
- スケーラブルなプロジェクト向けに Cargo スタイルのワークスペースをサポートします。
- 依存関係の重複排除のためのグローバル キャッシュを備えた、ディスク容量の効率化。
- テレメトリーはありません。インストールはあなたのビジネスです。
- macOS、Linux、Windows をサポートします。
から PyPI:
# With pip.
pip install fyn
# Or pipx.
pipx install fyn
またはソースからビルドします。
cargo install --path crates/fyn
コマンドラインリファレンスドキュメントを参照してください。 fyn help。
fyn は、ロックファイル、ワークスペースなどのサポートにより、プロジェクトの依存関係と環境を管理します。 rye または poetry:
$ fyn init example
Initialized project `example` at `/home/user/example`
$ cd example
$ fyn add ruff
Creating virtual environment at: .venv
Resolved 2 packages in 170ms
Installed 2 packages in 1ms
+ ruff==0.5.0
$ fyn run ruff check
All checks passed!
$ fyn lock
Resolved 2 packages in 0.33ms
$ fyn sync
Resolved 2 packages in 0.70ms
Checked 1 package in 0.02ms
タスクを定義します pyproject.toml そしてそれらを実行します fyn run:
[tool.fyn.tasks]
test = "pytest -xvs"
lint = "ruff check ."
format = { cmd = "ruff format .", description = "Format code" }
check = { chain = ["lint", "test"], description = "Lint then test" }
$ fyn run test
# runs pytest -xvs
$ fyn run test -- -k mytest
# extra args are passed through
$ fyn run --list-tasks
Available tasks:
check Lint then test
format Format code
lint ruff check .
test pytest -xvs
新しいシェルでプロジェクトの仮想環境をアクティブ化します。
$ fyn shell
success: Activated virtual environment at .venv
Type exit to deactivate.
bash、zsh、fish、nushell、powershell、cmd で動作します。
1 つのコマンドですべてまたは特定の依存関係をアップグレードします。
$ fyn upgrade
info: Upgrading all dependencies...
success: Dependencies upgraded successfully.
$ fyn upgrade requests flask
info: Upgrading: requests, flask
success: Dependencies upgraded successfully.
サポート --dry-run そして --no-sync。
fyn は、単一ファイルのスクリプトの依存関係と環境を管理します。
新しいスクリプトを作成し、その依存関係を宣言するインライン メタデータを追加します。
$ echo 'import requests; print(requests.get("https://example.com"))' > example.py
$ fyn add --script example.py requests
Updated `example.py`
次に、分離された仮想環境でスクリプトを実行します。
fyn は、Python パッケージによって提供されるコマンドライン ツールを実行してインストールします。 pipx。
次を使用して一時的な環境でツールを実行します。 fynx (別名 fyn tool run):
———— ^__^ (oo)_______ (__) )/ ||—-w | || ||”>
$ fynx pycowsay 'hello world!'
Resolved 1 package in 167ms
Installed 1 package in 9ms
"""
------------
------------
^__^
(oo)_______
(__) )/
||----w |
|| ||
ツールをインストールする fyn tool install:
$ fyn tool install ruff
Resolved 1 package in 6ms
Installed 1 package in 2ms
+ ruff==0.5.0
Installed 1 executable: ruff
$ ruff --version
ruff 0.5.0
fyn は Python をインストールし、バージョン間の素早い切り替えを可能にします。
複数の Python バージョンをインストールします。
$ fyn python install 3.12 3.13 3.14
Installed 3 versions in 972ms
+ cpython-3.12.12-macos-aarch64-none
+ cpython-3.13.9-macos-aarch64-none
+ cpython-3.14.0-macos-aarch64-none
現在のディレクトリにある特定の Python バージョンを使用します。
$ fyn python pin 3.11
Pinned `.python-version` to `3.11`
fyn は、一般的なもののドロップイン代替品を提供します。 pip、 pip-tools、 そして virtualenv コマンド。
既存のワークフローを変更せずに fyn に移行し、10 ~ 100 倍のスピードアップを体験してください。 fyn pip インタフェース。
要件をプラットフォームに依存しない要件ファイルにコンパイルします。
$ fyn pip compile requirements.in
--universal
--output-file requirements.txt
Resolved 43 packages in 12ms
仮想環境を作成します。
$ fyn venv
Using Python 3.12.3
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
ロックされた要件をインストールします。
$ fyn pip sync requirements.txt
Resolved 43 packages in 11ms
Installed 43 packages in 208ms
+ babel==2.15.0
+ certifi==2024.7.4
...
キャッシュが際限なく増大しないようにします。
export UV_CACHE_MAX_SIZE=2G
キャッシュが制限を超えると、コマンドごとに最も古いエントリが自動的に削除されます。サポート K、 M、 G、 そして T 接尾辞。
環境ごとに異なるロックファイルを使用します。
UV_LOCKFILE=linux.lock fyn lock
UV_LOCKFILE=macos.lock fyn lock
環境変数はインデックス URL で機能します。資格情報を含むプライベート インデックスに役立ちます。
[[tool.fyn.index]]
name = "private"
url = "https://${PYPI_TOKEN}@pypi.example.com/simple/"
明示的なインデックスは推移的な依存関係にも適用されます。すべての内部パッケージを直接の依存関係としてリストする必要はもうありません。
fyn は uv のドロップイン代替品です。同じ構成ファイル、同じ pyproject.toml 設定、同じ
fyn.lock フォーマット、同じ UV_* 環境変数。唯一の変更点はバイナリ名です。
# before
uv sync
uv run pytest
uvx ruff check .
# after
fyn sync
fyn run pytest
fynx ruff check .
私たちはあらゆるレベルの経験を持つ貢献者をサポートすることに情熱を注いでいますので、ぜひプロジェクトに参加していただきたいと思っています。を参照してください。 貢献ガイド 始めるために。
uv と同じもの: macOS、Linux、Windows (x86_64 と aarch64 にわたる)。
はい。同じ構成フォーマット、同じロックファイル、同じ環境変数。同じプロジェクト上で自由に切り替えることができます。
見る マニフェスト.md 完全な比較については、以下の表を参照してください。
| 特徴 | 紫外線 | フィン |
|---|---|---|
| テレメトリー (ラインホール) | OS、Python、CI情報を送信します | なし |
| タスクランナー | 利用不可 | [tool.fyn.tasks] |
shell 指示 |
利用不可 | fyn shell |
upgrade 指示 |
2 つのコマンドをチェーンする必要がある | fyn upgrade |
| キャッシュサイズの制限 | 制限なし | UV_CACHE_MAX_SIZE |
| カスタムロックファイル名 | 利用不可 | UV_LOCKFILE |
| 推移的なdepsの明示的なインデックス | 壊れた | 修理済み |
| インデックス URL の環境変数 | 要件.txt 内のみ | どこでも |
fyn の依存関係リゾルバーが使用するもの パブグラブ ボンネットの下で。特に PubGrub のメンテナーに感謝します。 ジェイコブ・フィンケルマン、彼らのサポートのために。
fyn のコアは以下から派生します。 紫外線 アストラル著。
fyn の Git 実装は以下に基づいています 貨物。
fyn の最適化の一部は、これまでに見てきた素晴らしい成果からインスピレーションを受けています。 pnpm、
造山帯、 そして バン。私たちはナサニエル J. スミスの著書からも多くのことを学びました。 人力車 そしてそのトランポリンを Windows サポート用に調整しました。
fyn は次のいずれかに基づいてライセンスされています。
あなたのオプションで。
お客様が明示的に別段の定めをしない限り、Apache-2.0 ライセンスで定義されているように、お客様が fyn に含めるために意図的に提出した投稿は、追加の条項や条件なしで上記のように二重ライセンスされるものとします。
#duriantacofyn #Fyn #は高速 #Python #パッケージ管理依存関係解決仮想環境および #pyproject.toml #ワークフローのためのプライバシー優先の #フォークです #GitHub