【Python】uvでパッケージ管理と仮想環境を構築する方法

当ページのリンクには広告が含まれています。
いずみ

こんな悩みを解決できる記事を書きました!

僕は現役フリーランスエンジニア(歴年)で、資格は個保有しています。

uvでPythonのパッケージ管理と仮想環境をまとめて扱いたい」とお考えではありませんか?

pip・venv・pyenv・pip-tools・Poetryを組み合わせて使ってきた方へ。

uvを導入すると、複数ツールの役割を1つのコマンドに集約でき、依存解決も高速になります

いずみ

一度慣れると元のツール構成には戻れません。

ということで、本記事ではuvでパッケージ管理と仮想環境を構築する方法を解説します。

いずみ

すぐ読み終わるので、ぜひ最後まで読んでくださいませ。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
執筆者/監修者
  • フリーランスエンジニア(保有資格個、企業と直接契約
  • ブログ・アフィリエイト歴7年(2018年〜)
  • ブランドせどりで月利50万円⇨脱サラ
  • 投資(仮想通貨・FX)歴7年(2018年〜)
  • X(旧Twitter)フォロワー約1,900人
  • 運営者情報はこちら
いずみです
目次

【Python】uvでパッケージ管理と仮想環境を構築する方法

早速ですが、uvでパッケージ管理と仮想環境を構築する手順を見ていきます。

uvとは何か

uvは、Rustで書かれた高速なPythonパッケージ・プロジェクト管理ツールです。

pip・venv・pyenv・pip-tools・Poetryといった複数ツールの役割を、1つのコマンドにまとめています。

依存解決が速く、uv.lockという名前のロックファイルで環境をそのまま再現できます。

uvをインストールする

STEP
インストールコマンドを実行する

macOSとLinuxでは、公式のインストールスクリプトを実行します。

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Homebrew
brew install uv

Windowsの場合はPowerShellでインストールスクリプトを実行するか、pip install uvでも導入できます。

STEP
バージョンを確認する
uv --version

バージョン番号が表示されればインストールは完了です。

プロジェクトを作成する

STEP
uv initを実行する
uv init myapp
cd myapp

pyproject.tomlとsrcレイアウト、.python-versionが生成されます。

仮想環境(.venv)とuv.lockは、最初のuv runやuv add、uv syncのタイミングで自動的に作られます。

STEP
pyproject.tomlを確認する
[project]
name = "myapp"
version = "0.1.0"
requires-python = ">=3.12"
dependencies = []

依存パッケージは[project]のdependenciesに追記されていきます。

いずみ

requirements.txtやsetup.pyを手で書く必要がなくなります。

パッケージを追加・削除する

パッケージの追加と削除は、uv addとuv removeで行います。

uv add requests
uv add --dev pytest ruff
uv remove requests

uv addを実行すると、pyproject.tomlとuv.lockが更新され、.venvへのインストールまで一度に行われます。

–devを付けたパッケージは開発用の依存グループに分離され、本番の依存関係とは別に管理されます。

仮想環境を同期して実行する

仮想環境の同期とスクリプト実行は、uv syncとuv runで行います。

uv sync
uv run python main.py

uv syncは、uv.lockの内容に合わせて.venvの中身を過不足なくそろえます。

uv run経由でコマンドを動かすと、実行前にpyproject.tomlとuv.lock、.venvの整合性が自動でチェックされます。

そのため、source .venv/bin/activateでの有効化は基本的に不要です。

いずみ

activateを忘れて別環境のパッケージを入れてしまう事故が減ります。

Python本体のバージョンを管理する

uvはPythonインタプリタ自体のインストールと切り替えにも対応しています。

uv python install 3.12
uv python pin 3.12
uv python list

uv python pinは.python-versionにバージョンを書き込み、プロジェクトで使うPythonを固定します。

pyenvを別途入れなくても、Pythonのバージョン管理までuvだけで完結します。

ロックファイルで環境を再現する

uv.lockには、依存パッケージの正確なバージョンとハッシュが記録されます。

uv lock
uv sync --locked

uv.lockをリポジトリに含めておけば、別のマシンでもuv syncだけで同じ環境が再現できます。

CIでは、uv sync –lockedやuv sync –frozenを使い、ロックファイルとずれた状態でのインストールを防ぎます。

コマンドラインツールを使う

ruffやblackのような単体ツールは、uvxで一時的な環境から実行できます。

uvx ruff check .
uv tool install ruff

uvxはuv tool runの別名で、プロジェクトの依存関係を汚さずにツールだけを動かせます。

常用するツールは、uv tool installでグローバルに入れておくと便利です。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式

【厳選】フリーランスエンジニアにおすすめなエージェント3選

フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。

僕が実際に利用しているおすすめエージェントを紹介しますね。

いずみ

エージェントは必ず複数登録してください。

担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…

僕は実際に5つのエージェントを使い回していますよ。

フリーランスを始めるなら「

案件数マージン率単価
約88,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 業界最大級の案件数。
  • 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
  • 案件参画中のフォローの充実。

※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。

は業界最大手のフリーランスエージェントです。

とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!

いずみ

僕もはじめてフリーランスの案件を貰ったのはです。

保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。

手厚い保障を重視したいなら「

案件数マージン率単価
約10,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 手厚い保障で正社員並みの安心感。
  • 還元率60%超え&単価公開でクリアな契約。
  • 給与保障制度(審査あり)。

は手厚い保障が特徴のフリーランスエージェントです。

フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。

いずみ

僕も何度か案件を紹介してもらいました。

自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。

週2〜3日の案件探しなら「

案件数マージン率単価
約5,000件非公開
初心者福利厚生申し込み
経験者向け無料
Good Point
  • IT案件に特化したフリーランスエージェント。
  • 週2〜3日の案件が豊富。
  • リモート案件が多く、直エンドなので単価も高い。

※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。

はIT案件に特化したフリーランスエージェントです。

週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。

いずみ

週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。

とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!

よくある質問

pipやPoetryのプロジェクトから移行できますか?

requirements.txtがある場合は、uv add -r requirements.txtで依存関係を取り込めます。

Poetryのpyproject.tomlは、[tool.poetry]セクションを標準の[project]形式へ書き換えることで移行できます。

uv.lockはgitで管理すべきですか?

アプリケーション開発では、環境を固定するためにuv.lockをリポジトリに含めるのが基本です。

ライブラリとして配布する場合は、利用側の環境に合わせるため含めないことが多いです。

今までのpipコマンドは使えなくなりますか?

uv pip installのように、uv pipサブコマンドでpip互換のインターフェースが用意されています。

既存の手順を大きく変えずに、実行速度だけ上げたい場合にも活用できます。

まとめ

今回は、uvでパッケージ管理と仮想環境を構築する方法について解説しました。

以下が本記事のまとめになります。

まとめ
  • uvはpip・venv・pyenv・Poetryの役割を1つにまとめたRust製の高速ツール。
  • uv initでプロジェクト作成、uv add/uv removeで依存管理、uv syncで環境を同期できる。
  • uv.lockを共有すれば、別マシンでもuv syncだけで同じ環境を再現できる。
まとめ
  • おすすめ本
¥2,970 (2023/07/25 22:48時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場

Pythonの勉強なら「」が体系的に学べるのでおすすめですよ♪

いずみ

最後までお読みいただき、ありがとうございました!

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
  • クソおすすめ本
¥4,480 (2024/06/01 23:28時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場
いずみ

海外のエンジニアがどういった思考で働いているかが理解できます。

海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次