Skip to content

プロジェクトでの作業

uvは、pyproject.tomlファイルに依存関係を定義するPythonプロジェクトの管理をサポートしています。

新しいプロジェクトの作成

uv initコマンドを使用して新しいPythonプロジェクトを作成できます:

$ uv init hello-world
$ cd hello-world

または、作業ディレクトリでプロジェクトを初期化することもできます:

$ mkdir hello-world
$ cd hello-world
$ uv init

uvは次のファイルを作成します:

.
├── .python-version
├── README.md
├── hello.py
└── pyproject.toml

hello.pyファイルには、シンプルな「Hello world」プログラムが含まれています。uv runで試してみてください:

$ uv run hello.py
Hello from hello-world!

プロジェクト構造

プロジェクトは、いくつかの重要な部分で構成されており、これらが連携してuvがプロジェクトを管理できるようにします。 uv initによって作成されたファイルに加えて、uvはプロジェクトコマンド(例:uv runuv syncuv lock)を初めて実行するときに、プロジェクトのルートに仮想環境とuv.lockファイルを作成します。

完全なリストは次のようになります:

.
├── .venv
│   ├── bin
│   ├── lib
│   └── pyvenv.cfg
├── .python-version
├── README.md
├── hello.py
├── pyproject.toml
└── uv.lock

pyproject.toml

pyproject.tomlには、プロジェクトに関するメタデータが含まれています:

pyproject.toml
[project]
name = "hello-world"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
dependencies = []

このファイルを使用して依存関係を指定し、プロジェクトの詳細(例:説明やライセンス)を指定します。このファイルは手動で編集することも、uv adduv removeなどのコマンドを使用してターミナルからプロジェクトを管理することもできます。

Tip

pyproject.toml形式の詳細については、公式のpyproject.tomlガイドを参照してください。

また、このファイルを使用して、[tool.uv]セクションでuvの設定オプションを指定します。

.python-version

.python-versionファイルには、プロジェクトのデフォルトのPythonバージョンが含まれています。このファイルは、プロジェクトの仮想環境を作成するときにuvが使用するPythonバージョンを指定します。

.venv

.venvフォルダーには、プロジェクトの仮想環境が含まれています。これは、システムの他の部分から分離されたPython環境です。uvはここにプロジェクトの依存関係をインストールします。

詳細については、プロジェクト環境のドキュメントを参照してください。

uv.lock

uv.lockは、プロジェクトの依存関係に関する正確な情報を含むクロスプラットフォームのロックファイルです。pyproject.tomlがプロジェクトの広範な要件を指定するのに対し、ロックファイルにはプロジェクト環境にインストールされる正確な解決バージョンが含まれています。このファイルはバージョン管理にチェックインする必要があり、マシン間で一貫性のある再現可能なインストールを可能にします。

uv.lockは人間が読めるTOMLファイルですが、uvによって管理されるため手動で編集しないでください。

詳細については、ロックファイルのドキュメントを参照してください。

依存関係の管理

uv addコマンドを使用して、pyproject.tomlに依存関係を追加できます。これにより、ロックファイルとプロジェクト環境も更新されます:

$ uv add requests

バージョン制約や代替ソースを指定することもできます:

$ # バージョン制約を指定する
$ uv add 'requests==2.31.0'

$ # Git依存関係を追加する
$ uv add git+https://github.com/psf/requests

パッケージを削除するには、uv removeを使用します:

$ uv remove requests

パッケージをアップグレードするには、--upgrade-packageフラグを使用してuv lockを実行します:

$ uv lock --upgrade-package requests

--upgrade-packageフラグは、ロックファイルの他の部分をそのままにして、指定されたパッケージを最新の互換バージョンに更新しようとします。

詳細については、依存関係の管理のドキュメントを参照してください。

コマンドの実行

uv runを使用して、プロジェクト環境で任意のスクリプトやコマンドを実行できます。

uv runの呼び出しの前に、uvはpyproject.tomlとロックファイルが最新であること、および環境がロックファイルと最新であることを確認し、手動の介入なしでプロジェクトを同期状態に保ちます。uv runは、コマンドが一貫性のあるロックされた環境で実行されることを保証します。

例えば、flaskを使用するには:

$ uv add flask
$ uv run -- flask run -p 3000

または、スクリプトを実行するには:

example.py
# プロジェクト依存関係を必要とする
import flask

print("hello world")
$ uv run example.py

または、uv syncを使用して環境を手動で更新し、コマンドを実行する前にアクティブ化します:

$ uv sync
$ source .venv/bin/activate
$ flask run -p 3000
$ python example.py

Note

プロジェクトでuv runを使用せずにスクリプトやコマンドを実行するには、仮想環境がアクティブである必要があります。仮想環境のアクティベーションは、シェルやプラットフォームによって異なります。

詳細については、プロジェクトでのコマンドの実行およびスクリプトの実行のドキュメントを参照してください。

配布物のビルド

uv buildを使用して、プロジェクトのソースディストリビューションおよびバイナリディストリビューション(ホイール)をビルドできます。

デフォルトでは、uv buildは現在のディレクトリでプロジェクトをビルドし、ビルドされたアーティファクトをdist/サブディレクトリに配置します:

$ uv build
$ ls dist/
hello-world-0.1.0-py3-none-any.whl
hello-world-0.1.0.tar.gz

詳細については、プロジェクトのビルドのドキュメントを参照してください。

次のステップ

uvでのプロジェクト作業の詳細については、プロジェクトの概念ページおよびコマンドリファレンスを参照してください。

または、プロジェクトをパッケージとして公開する方法を学んでください。