20240722104422 uv
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で動かすことは可能だけど微妙なので非推奨。