up:: py
up:: Rust

rust製のpythonのパッケージインストーラ。
10倍速いと謳っている。いつものpipの頭にuvを付けるだけで実行可能。
venvも作成可能。

GitHub - astral-sh/uv: An extremely fast Python package installer and resolver, written in Rust.

仮想環境上での環境変数管理が出来ないが、miseに任せればいい。

mise-en-placeとuvでPython環境をセットアップする 備忘録 - Qiita

仮想環境

uv venv

オンデマンド仮想環境

pythonスクリプトを実行する際、必要なライブラリがインストール済みのオンデマンド仮想環境を作ってくれるuv run --with library pythonfile.py機能がある。
場所は~/.cache/uv。消すときはuv cache clear

スクリプトにuv用にパッケージメタデータを追加することもできる。
uv add --script example.py 'rich'

コマンド

rust製高速linterのruffや型チェックのmypyといったコマンド系を使うときはuvx
これはコマンドが入ってないと自動でインストールしてくれる。バージョン指定も可能。

キャッシュにあるのでwhichで拾えないが、uv tool installで恒久的にインストールすれば見える。
場所は~/.local/bin

纏めてのアップグレードも可能。

プロジェクト

uv initで簡単にプロジェクトが作れる。
削除はuv remove
uv buildでパッケージ化できる。
uv publishで直接パッケージ公開できる。

Pythonのパッケージ管理ツール「uv」を試す

uv pip

uv上でpipの動作をエミュレートしてるらしい。
その関係で-yオプションが無い。

Compatibility with pip | uv

pyproject.tomlを使う場合はaddが使える。

バージョン管理

一応できる。
Installing Python | uv

uv python install pypy@3.12などとしてインストール可能。
2024/10/28ではグローバルで使用できない。uv runか仮想環境が推奨されている。
そもそも仮想環境のインストール時にバージョンを指定できるので、あまり意識しない。

cpythonというのは公式の実装。C言語で実装されたpython。
公式が配布可能バイナリを公開していないからこうなってるらしい。

C++にコンパイルするCythonとは別。

pypyはCPythonから一部を切り出したRPython(サブセット)を用いて作られた高速なpython。
つまり余計なものを切って作り直した。実行時にコンパイル(JIT)を行うため早いらしい。元は行単位だがpypyは関数単位、モジュール単位でコンパイルする。
型推論もある。
なおどちらもptyhon3.13で実装予定。
PyPyの基礎知識まとめ その1 Python - Qiita

これで入れたpythonは外部環境となるため、pipを入れようとするとエラーが出る。

pipやpoetryから移行

uv tool install migrate-to-uv
uvx migrate-to-uv

全部pyproject.tomlに書き込まれる。

パッケージマネージャーuvへの移行ガイド

pyproject.tomlの内容をインストール

uv sync