基礎編では、新しいプロジェクトの開始から依存関係の更新まで、1ステップずつ説明します。
前提
- Apple Silicon Macを使用
- Homebrewによるパッケージ管理
環境構築 Step-by-step
ホームディレクトリ(/Users/xxxxx
)から開始するものとする。
プロジェクトの作成
uv init
で新しいプロジェクトnew-project
を作成する。
$ uv init new-project
uv init new-project
Initialized project `new-project` at `/Users/xxxxx/new-project`
new-project
ディレクトリに移動する。
$ cd /Users/xxxxx/new-project
この時点で、new-project
ディレクトリには、以下の6つのファイルが作成されている。
.git
.gitignore
.python-version
README.md
main.py
pyproject.toml
.git
.gitignore
は、Git関連ファイル(Git編・GitHub連携編)。
.python-version
の内容。
3.13
README.md
は空。
main.py
の内容は必要最低限のテンプレート。
def main():
print("Hello from new-project!")
if __name__ == "__main__":
main()
とりあえず、uv run
で実行してみる。
$ uv run main.py
uv run main.py
Hello from new-project!
pyproject.toml
の内容。依存関係dependencies
は、まだ記述なし。
[project]
name = "new-project"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = []
Pythonのバージョンを指定して仮想環境を作る。システムデフォルトのバージョンのままならば、uv env
だけでよい。
$ uv venv --python 3.13.5
uv venv --python 3.13.5
Using CPython 3.13.5
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
仮想環境関係ファイルを保管する.venv
ディレクトリが作成される。
仮想環境を有効にする。
$ source .venv/bin/activate
uv pip install
で必要なパッケージをインストールする。
$ uv pip install requests
uv pip install requests
Resolved 5 packages in 51ms
Installed 5 packages in 7ms
+ certifi==2025.7.14
+ charset-normalizer==3.4.2
+ idna==3.10
+ requests==2.32.4
+ urllib3==2.5.0
依存関係の管理
必要に応じて、依存関係をプロジェクトファイルに追加する。
$ uv add requests
uv add requests
Resolved 6 packages in 4ms
Audited 5 packages in 0.04ms
依存関係の詳細を記録したuv.lock
ファイルが作成される。
追加後のpyproject.toml
の内容。dependencies
に依存情報"requests>=2.32.4",
が追記されている。
[project]
name = "new-project"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
"requests>=2.32.4",
]
uv remove
でpyproject.toml
内の依存情報を削除できる。
uv add
で、依存関係も含めてpandas
をインストールしてみる。
$ uv add pandas
uv add pandas
Resolved 12 packages in 60ms
Installed 6 packages in 40ms
+ numpy==2.3.2
+ pandas==2.3.1
+ python-dateutil==2.9.0.post0
+ pytz==2025.2
+ six==1.17.0
+ tzdata==2025.2
追加後のpyproject.toml
の内容。依存情報"pandas>=2.3.1",
が追記されている。
[project]
name = "new-project"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
"pandas>=2.3.1",
"requests>=2.32.4",
]
uv tree
で確認した依存関係の構造はこんな感じ。
uv tree
Resolved 12 packages in 0.75ms
new-project v0.1.0
├── pandas v2.3.1
│ ├── numpy v2.3.2
│ ├── python-dateutil v2.9.0.post0
│ │ └── six v1.17.0
│ ├── pytz v2025.2
│ └── tzdata v2025.2
└── requests v2.32.4
├── certifi v2025.7.14
├── charset-normalizer v3.4.2
├── idna v3.10
└── urllib3 v2.5.0
手動でpyproject.toml
から"pandas>=2.3.1",
行を削除した後、環境をuv sync
で同期してみる。
$ uv sync
pandas
とその依存パッケージがアンインストールされる。
uv sync
Resolved 6 packages in 2ms
Uninstalled 6 packages in 160ms
- numpy==2.3.2
- pandas==2.3.1
- python-dateutil==2.9.0.post0
- pytz==2025.2
- six==1.17.0
- tzdata==2025.2
Pythonのインタプリタで確認。
Python 3.13.5 (main, Jul 23 2025, 00:18:28) [Clang 20.1.4 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> import pandas
Traceback (most recent call last):
File "<python-input-1>", line 1, in <module>
import pandas
ModuleNotFoundError: No module named 'pandas'
>>>
パッケージ内の依存関係も、uvが自動管理してくれるので便利。
まとめ
一連の流れをまとめます。
uv init [project]
-
[project]
ディレクトリに移動 uv venv --python [version]
-
uv pip install [packages]
またはuv add [packages]
- 必要に応じて、
uv remove [packages]
またはマニュアルでpyproject.toml
を編集、uv sync
で環境を同期。
Tips
入力ウインドウが、trminalモード>_
なのか、AgentモードA
なのか気をつける(ウインドウ左下にアイコンが表示されている)。Agentモードのときにコマンドを入力すると、AIがいったん考えた後に同じコマンドを入力するので、二度手間で時間もかかりイラつくので注意。
⌘
+I
で、terminalとAgentモードを切り替えられる。