🐍
uvの使い方とインストール
概要
uvのインストールからサンプルの作成まで
参考資料(元記事)
手順
uvをインストールする: https://docs.astral.sh/uv/guides/projects/
curl -LsSf https://astral.sh/uv/install.sh | sh
# 反映
source $HOME/.local/bin/env
# シェル補完を追加
echo 'eval "$(uv generate-shell-completion zsh)"' >> ~/.zshrc
実際に作ってみる
すでにあるプロジェクトに作る場合は
uv init
でOK
❯ tree
.
├── README.md
├── hello.py
└── pyproject.toml
1 directory, 3 files
pyproject.toml
と hello.py
が作成された
hello.py
を実行するには
uv run python hello.py
# これでもOK
uv run hello.py
でOK
ライブラリの追加は add
で行う
uv add click
# 開発環境のみにインストール
uv add --dev ruff
uvはrun時にsyncしてくれるので明示的にsyncしなくても良いらしい
開発環境にのみで使うパッケージについて
LinterやFormatterなど開発環境でのみ使うパッケージの実行方法が複数ある
-
uv add --dev
: 開発環境を整える場合- 例:
uv add --dev ruff
- →
uv run ruff check hello.py
- pyproject.tomlに追記される
-
uv sync --no-dev
で実行環境になるためruffは消える
- →
- 例:
-
uv tool install
: ローカルにパッケージをインストールして横断で使う場合- 例:
uv tool install ruff
- →
uv tool run ruff check hello.py
oruvx ruff check hello.py
- →
- 実はインストールしなくても実行できる(↓参照)
- 例:
-
uv tool run
,uvx
: とりあえず実行できればOKの場合- 例: 特に
uvx ruff check hello.py
- 例: 特に
とはいえ、普通のプロジェクト以上では uv add --dev
になるのでは
--with
で複数ツールを実行できる
Qiitaの元記事に合わせてファイルを同じ環境に準備
hello.py
def hello() -> str:
return "Hello from uv-sample-project!"
def main():
print(hello())
if __name__ == "__main__":
main()
test_hello.py
import hello
def test_hello():
assert hello.hello() == "Hello from uv-sample-project!"
テストしてみる
uvx --with pytest-cov pytest --cov
Discussion