1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

uvでpython環境をつくってみよう

Last updated at Posted at 2025-11-30

uvとは?

uvはRustで作られた超高速なpython環境を一元管理できるオールインワンツール

・超高速
・仮想環境・依存関係・Python本体のバージョン管理も可能
・pip, venvなどの機能をまとめてカバー

uvの特徴や使い方を簡単にお伝えします。
venv+pipなどで環境作っている方は是非uvの速度を体験してみて下さい
https://docs.astral.sh/uv/
image (2).png

興味を持ったきっかけ

X(旧Twitter)にて「uvすごい」というワードを頻繁に見かけるようになり、実際に触ってどうすごいのか確かめてみたいと思ったのがきっかけです。

パッケージ管理のイメージ

  • PCにpythonをインストールしますが、プロジェクトごとに使用するパッケージが異なるため、venvなどの仮想環境を使用してプロジェクトごとにpythonパッケージを管理したくなります
  • uvでは仮想環境・依存関係・Python本体のバージョンをまとめてプロジェクト単位で管理できます
    image (30).png

uvをinstall

windowsの場合はpowershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS linuxの場合
curl -LsSf https://astral.sh/uv/install.sh | sh

pip installでのインストールも可能
image (11).png

インストールするとuvコマンドが使えるようになります
image (3).png

プロジェクトを作成

  • プロジェクト作成

    • フォルダごと作成
      uv init [プロジェクト名]
      
    • もしくはプロジェクトフォルダを作ってからその中で実行
      mkdir [プロジェクト名]
      cd [プロジェクト名]
      uv init
      
    • バージョン指定は-p 3.13
      uv init [プロジェクト名] -p 3.13
      
  • 自動でファイルが生成されます
    image (12).png

    image (13).png

  • .python-version

    • プロジェクトのpythonバージョンが定義されます
      image (14).png
  • pyproject.toml

  • main.py

    • print分だけ書かれています
      image (18).png

自動生成されたmain.pyを実行してみます

  • uv run main.pyで実行します

  • python3.13.5で.venvを作成したあとprintが実行されました
    image (16).png

  • uv run実行後は.venvフォルダとuv.lockが追加されています
    image (17).png

  • uvはvenv(pythonの標準機能)で仮想環境を自動的に作ってくれます

    • .venvフォルダの下に仮想環境ができあがります。ここに今後追加の依存関係(パッケージ)をインストールしていきます
    • .python-versionに記載されているpythonバージョンで構築されます
      image (19).png
  • uv.lock

    • uv.lockはプロジェクトの依存関係の細かい情報が記録されます。requirements.txtの代わりになる情報です。自動編集にまかせて人間は触りません。
      image (20).png
  • uv run main.pyを実行すると自動でvenv環境で実行されます。venvで煩わしい.venv/Scripts/activateやdeactivateの必要がありません。

依存関係(パッケージ)をインストール

  • uv add [パッケージ名]でインストールします(pip install [パッケージ名]の代わり)

  • .venvがまだない場合は勝手に作られます
    image (23).png

  • pyproject.tomlやuv.lockに追記され、.venvの下に必要なファイルがインストールされます
    image (24).png

    image (25).png

    image (26).png

  • バージョン指定でインストールするとバージョンが>=ではなく==で記載されます

    • uv add [パッケージ名]==[バージョン]
      image (29).png

他開発メンバが構築するとき

  • gitでソースコード(.venv以外)を共有してuv syncを実行すると、開発者の環境にも.venvが作成され、簡単に環境を共有することができます

既存のpip + venv環境からの移行

  • 既存環境のプロジェクトフォルダでpythonバージョンを指定してuvプロジェクトを作成します

    • uv init -p 3.13.2
  • 既存のパッケージをuvに追加します

    • uv add -r requirements.txt
  • 必要に応じてpyproject.tomlのnameやversion、description、readme.mdを編集します
    image (31).png

  • 自動生成されたmain.pyは不要であれば削除します

パッケージインストール時の注意点

  • uv pip install [パッケージ名]でも.venv下にインストールできますが、pyproject.tomlやuv.lockに反映されずプロジェクト管理対象にならないため注意が必要です。
    image (27).png

  • 上記の状態でuv syncを実行すると.venvからrequestsモジュールが削除されてしまいます(=pyproject.toml + uv.lockがマスタ)
    image (28).png

デメリットは?(注意点)

まとめ

uvはPython環境管理の面倒を一掃します。

  • メリット:

    • 超高速
    • venv activate不要
    • 依存関係管理がスマート
  • デメリット:

    • 歴史が浅い(2024年~)
    • 一部パッケージで工夫が必要な場合がありそうです

X(旧Twitter)にて「uvすごい」というワードを頻繁に見かけるようになったのがきっかけで、実際に触りってみました。
使ってみると、確かに超高速でその上とても使いやすかったため今は試験的にプロジェクトにも組み込んで運用しています。
まだ使ったことがない方はぜひ試してみてください

番外編

複数のPythonをインストール(プロジェクトを作ると自動でやってくれるのであまり意識する必要はありません)

  • 最新pythonインストール:

    • uv python install
      image (4).png
  • バージョン指定インストール:

    • uv python install 3.13
  • 使用可能なpythonバージョンとインストール済みのpythonが表示されます

    • uv python list
      image (5).png
  • python実行

    • uv run python / uv run --python 3.13 python
      image (10).png

    • インストールすると環境変数Pathに追加されます

    • python **.pyのようにも使えるようになります

あらためて確認する自分のpython環境

これまで自分のPCではpyenvやpylancherなどpython管理するライブラリをたくさん使ってきました。現在どうなっているか整理するために、改めて自分の環境を確認してみました。

  • Apps > Install apps
    pythonが3バージョンインストールされていてPython Lancherがはいっている。
    (Python Lancherは、Python 3.3以降をwindowsインストール時に自動的にインストールされるようです)
    image (7).png

  • システムが参照してるPythonは?(Python --version)
    環境変数の先頭のpython310が参照されている
    image (8).png

    image (6).png

  • Python Lancherの状況は?(py --list)
    3.12がcurrent設定されており、uvでインストールしたpython3.13.5も認識されている
    image (9).png

自分で作ったvenvとuvが作ったvenvの違い

  • 自分で作ったvenv

    • python -m venv .venv
      image (21).png
  • uvが作ったvenvはいろいろ追加されている

    • CPython指定
    • uvバージョン指定
    • prompt(環境名)指定
      image (22).png
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?