<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Pip on Keyuki Blog</title>
    <link>https://blog.keyuki.net/tags/pip/</link>
    <description>Recent content in Pip on Keyuki Blog</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sat, 27 Jun 2026 10:00:00 +0900</lastBuildDate>
    <atom:link href="https://blog.keyuki.net/tags/pip/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>pip3とuvは何が違う？Pythonのパッケージ管理を比較した</title>
      <link>https://blog.keyuki.net/posts/pip3-vs-uv-python-package-manager/</link>
      <pubDate>Sat, 27 Jun 2026 10:00:00 +0900</pubDate>
      <guid>https://blog.keyuki.net/posts/pip3-vs-uv-python-package-manager/</guid>
      <description>&lt;p&gt;Pythonでライブラリを入れるとき、長いあいだ使ってきたのが &lt;code&gt;pip3&lt;/code&gt; でした。&lt;/p&gt;&#xA;&lt;p&gt;ところが最近は、インストール手順に &lt;code&gt;uv add&lt;/code&gt; や &lt;code&gt;uv run&lt;/code&gt; と書かれていることが増えています。見た目はpipの新しい高速版ですが、実際に触ってみると担当範囲がかなり違います。&lt;/p&gt;&#xA;&lt;p&gt;先に結論を書くと、&lt;strong&gt;単発でパッケージを入れるだけならpipで十分、プロジェクトの環境をまとめて管理するならuvが便利&lt;/strong&gt;です。&lt;/p&gt;&#xA;&lt;p&gt;この記事では、pip3とuvの違いを、実際のコマンドを見ながら整理します。検索時によく使われる「pip3」をタイトルと見出しに残し、本文ではツールの総称として「pip」と表記します。コマンド例では、使用するPythonを明確にするため、基本的に&lt;code&gt;python3 -m pip&lt;/code&gt;を使います。&lt;/p&gt;&#xA;&lt;h2 id=&#34;そもそもpip3とは&#34;&gt;そもそもpip3とは&lt;/h2&gt;&#xA;&lt;p&gt;pipは、Pythonのパッケージをインストールするための標準的なツールです。&lt;code&gt;requests&lt;/code&gt;を入れるなら、次のように実行します。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pip3 install requests&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;pip3&lt;/code&gt;という名前は、Python 2向けの&lt;code&gt;pip&lt;/code&gt;と区別するために使われてきました。ただし、複数のPythonが入っている環境では、&lt;code&gt;pip3&lt;/code&gt;がどのPythonに結びついているのか分かりにくいことがあります。&lt;/p&gt;&#xA;&lt;p&gt;そのため、pipの公式ドキュメントでは、Unix・macOSで次の書き方が案内されています。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;python3 -m pip install requests&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これなら「この&lt;code&gt;python3&lt;/code&gt;に対応するpipを使う」という関係が明確です。&lt;/p&gt;&#xA;&lt;p&gt;pipが担当する中心的な仕事は、パッケージとその依存パッケージを解決して、指定したPython環境へインストールすることです。仮想環境の作成には&lt;code&gt;venv&lt;/code&gt;、依存バージョンの固定には&lt;code&gt;pip-tools&lt;/code&gt;など、別の仕組みを組み合わせることがあります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;uvとはpipより広い範囲を管理するツール&#34;&gt;uvとは：pipより広い範囲を管理するツール&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://docs.astral.sh/uv/&#34;&gt;uv&lt;/a&gt;は、Astralが開発するRust製のPythonパッケージ・プロジェクト管理ツールです。&lt;/p&gt;&#xA;&lt;p&gt;パッケージのインストールだけでなく、次の仕事をひとつのコマンドにまとめています。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Python本体のインストールとバージョン管理&lt;/li&gt;&#xA;&lt;li&gt;仮想環境の作成&lt;/li&gt;&#xA;&lt;li&gt;パッケージの追加と削除&lt;/li&gt;&#xA;&lt;li&gt;依存関係の解決とロック&lt;/li&gt;&#xA;&lt;li&gt;プロジェクト内でのコマンド実行&lt;/li&gt;&#xA;&lt;li&gt;Python製CLIツールの一時実行・インストール&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;つまり、pipだけを置き換える道具というより、&lt;code&gt;pip&lt;/code&gt;、&lt;code&gt;venv&lt;/code&gt;、&lt;code&gt;pip-tools&lt;/code&gt;、&lt;code&gt;pipx&lt;/code&gt;、&lt;code&gt;pyenv&lt;/code&gt;などが分担していた作業を広く引き受ける道具です。&lt;/p&gt;&#xA;&lt;p&gt;新しいプロジェクトでは、プロジェクト作成からパッケージの追加、プログラムの実行までをuvのコマンドで進められます。具体的な手順は後ほどpipと並べて比較します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;pip3とuvの違いを表で比較&#34;&gt;pip3とuvの違いを表で比較&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;比較項目&lt;/th&gt;&#xA;          &lt;th&gt;pip&lt;/th&gt;&#xA;          &lt;th&gt;uv&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;主な役割&lt;/td&gt;&#xA;          &lt;td&gt;パッケージのインストール&lt;/td&gt;&#xA;          &lt;td&gt;Pythonとプロジェクト環境の総合管理&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;実装&lt;/td&gt;&#xA;          &lt;td&gt;Python&lt;/td&gt;&#xA;          &lt;td&gt;Rust&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;速度&lt;/td&gt;&#xA;          &lt;td&gt;標準的&lt;/td&gt;&#xA;          &lt;td&gt;依存解決・インストールが高速&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;仮想環境&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;venv&lt;/code&gt;などを別に使う&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;uv venv&lt;/code&gt;またはプロジェクト操作時に自動作成&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;依存関係の宣言&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;requirements.txt&lt;/code&gt;や&lt;code&gt;pyproject.toml&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;主に&lt;code&gt;pyproject.toml&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;ロック&lt;/td&gt;&#xA;          &lt;td&gt;pip単体では専用ロックファイルを作らない&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;uv.lock&lt;/code&gt;を自動作成&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Python本体の管理&lt;/td&gt;&#xA;          &lt;td&gt;しない&lt;/td&gt;&#xA;          &lt;td&gt;できる&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;コマンド実行&lt;/td&gt;&#xA;          &lt;td&gt;仮想環境を有効化して実行&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;uv run&lt;/code&gt;で実行できる&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;導入&lt;/td&gt;&#xA;          &lt;td&gt;Python環境に同梱されることが多い&lt;/td&gt;&#xA;          &lt;td&gt;uvを別途インストールする&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;互換性&lt;/td&gt;&#xA;          &lt;td&gt;長年使われ、対応例が多い&lt;/td&gt;&#xA;          &lt;td&gt;一般的なpip操作に対応するが完全互換ではない&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;一番大きな違いは速度よりも、&lt;strong&gt;管理する範囲&lt;/strong&gt;です。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
