PyCharmに追加されたuvでパッケージ管理


press
PyCharmに追加されたuvでパッケージ管理

PyCharmに追加されたuvでパッケージ管理

PyCharmはバージョン2024.3.2から、既存のVirtualenvやPipenv、Poetryに加えて、新たに「uv」を使ったパッケージ管理が可能になりました。この記事では、uvによるパッケージ管理の特徴や使い方についてを解説します。

開発環境

PC: MacBook Pro (14, 2021)
OS: macOS Monterey 12.6.7
PyCharm: 2024.3.2 
Python: 3.12.0

目次

  • uvについて
  • 使い方
  • pipと比較

uvについて

uvは「Rustで書かれた非常に高速なPythonパッケージとプロジェクト管理ツールです。」と書かれています。今回、pipとの速度比較を行った結果、キャッシュを使用せずにインストールしたため「pipより10〜100倍速い」とはなりませんでしたが、6〜7倍ほどの速度差が出ました。

https://docs.astral.sh/uv/

使い方

パッケージの追加

パッケージを追加する場合は、uv addコマンドを使用します。以下のように複数のパッケージを同時にインストールすることも可能です。インストールしたパッケージはpyproject.tomlに追加されます。

uv add black flake8 isort setuptool

pyproject.toml

[project]
name = "uv-demo"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = [
    "black>=25.1.0",
    "flake8>=7.1.2",
    "isort>=6.0.0",
    "setuptools>=75.8.0",
]

パッケージの除外

追加したパッケージを除外する場合は、uv removeコマンドを使用します。コマンドを実行するとpyproject.tomlから除外されます。

uv remove black

pyproject.toml

[project]
name = "uv-demo"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = [
    "flake8>=7.1.2",
    "isort>=6.0.0",
    "setuptools>=75.8.0",
]

開発環境にパッケージを追加

開発環境のみで使用するパッケージを追加する場合は、uv add --devコマンドを使用します。インストールしたパッケージはpyproject.tomlのdependency-groupsに追加されます。

uv add --dev black flake8 isort setuptools

pyproject.toml

[project]
name = "uv-demo"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []

[dependency-groups]
dev = [
    "black>=25.1.0",
    "flake8>=7.1.2",
    "isort>=6.0.0",
    "setuptools>=75.8.0",
]

開発環境に追加したパッケージの除外

開発環境に追加したパッケージを除外する場合は、uv remove --devコマンドを使用します。コマンドを実行するとpyproject.tomlから除外されます。

uv remove --dev black

pyproject.toml

[project]
name = "uv-demo"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []

[dependency-groups]
dev = [
    "flake8>=7.1.2",
    "isort>=6.0.0",
    "setuptools>=75.8.0",
]

パッケージの同期

パッケージを同期する場合は、uc syncコマンドを使用します。

全てのパッケージを同期

uv sync

本番環境でのみ使用するパッケージを同期(開発環境に追加したパッケージは含めない)

uv sync --no-dev

pipとの速度比較

uvのインストール時間

uvのインストール時間
uvのインストール時間

pipのインストール時間

pipのインストール時間
pipのインストール時間
  • uv add –no-cache black flake8 isort setuptools
    • ユーザ時間: 0.03s
    • システム時間: 0.04s
    • CPU使用率: 14%
    • 合計時間: 0.437s
  • pip install –no-cache-dir black flake8 isort setuptools
    • ユーザ時間: 1.29s
    • システム時間: 0.36s
    • CPU使用率: 55%
    • 合計時間: 2.981s

比較すると、uv add が約0.44秒、pip install が約3秒弱なので、単純な計算では 6〜7倍ほどの速度差がでました。


株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    Related Articles

    Flask

    3行でDockerで起動するFlaskのミニマムアプリケーションを構築

    3行でDockerで起動するFlaskのミニマムアプリケーションを構築 Flaskで”Hello, World!”を表示するだけのミニマムなアプリケーションをDockerで構築します。 リポジトリ […]

    Posted on by press
    Other

    2021年に最も読まれた記事ランキング

    2021年に最も読まれた記事ランキング 早いもので今年も残すところあとわずかとなりました。今年のまとめとして2021年に最も読まれたブログをランキング形式で発表します。 第5位 第4位 第3位 第2位 第1位 1位、2位 […]

    Posted on by press