20240722104422 uv

pythonpackagetooluv

uvはpipの代替で高速に動作するもの(だった)。 update: 20250112 プロジェクト作成できるようになっていた。 uvだけでPythonプロジェクトを管理する

使い方

プロジェクト作成

uv init [プロジェクト名]

プロジェクト、といいつつ、 pythonのプロジェクト構成 のような __init__.py__main__.py などは生成されない。 しかも生成されるファイル名がhello.py。 hello.pyは微妙すぎるのではないか。

20250216 この問題は解決したようだ。

Create `main.py` instead of `hello.py` in `uv init` by Gankra · Pull Request #10369 · astral-sh/uv

プロジェクト用 .venvを生成 したり、あらかじめ指定された依存パッケージをインストール

uv sync

パッケージの追加

uv add [パッケージ名]

開発時のみ必要なパッケージは

uv add --dev [パッケージ名]

パッケージの削除

uv remove [パッケージ名]

実行

uv run [スクリプト名]

TODO: uvx が何なのかを調べる。

インストール

GitHub - astral-sh/uv: An extremely fast Python package and project manager, written in Rust. windowsの場合、pipでinstallしてはいけない。下記参照。

windows+pyenv-win+pipでインストールでのエラー

windowsで pyenv-win を使っている場合に、pip install uv などでインストールすると、 uvで作ったプロジェクト内で、

uv sync
uv run

を実行しようとすると

No global/local python version has been set yet. Please set the global/local version by typing:
pyenv global 3.7.4
pyenv local 3.7.4

というエラーが起きた。 20250112 時点。

対応方法

uv pipでインストールしてはいけない。 もしインストールしてしまった場合は削除、 .pyenv\pyenv-win\shims に uv関係のファイルが存在しないようにすれば良かった。

補足

この場合でも、 uv init コマンドで生成された .python-version を削除すると問題無く動作した。 これはpyenv-winのバグのようだ。 bug: pyenv global not working in windows powershell · Issue #551 · pyenv-win/pyenv-win

この問題は同じ環境で動かしている Rye では発生しない。 .python-versionを削除していいのか、という疑問もある。 一応このworkaroundで動かすことは可能だけど微妙なので非推奨。


Refs.