【比較】npx, npm, uv の違いまとめ¶
npx, npm, uv は、それぞれ異なるプログラミング言語や目的で使用されるパッケージ管理関連のコマンドです。
概要¶
npm と npx は JavaScript / Node.js 側のツールで、uv は Python 側のツールです。生態系(エコシステム)が違うため、直接の置き換え関係にはありません。役割としては「インストール・管理」(npm / uv)と「インストールせず一度だけ実行」(npx / uvx)という2軸で整理すると理解しやすくなります。
npm (Node Package Manager)¶
- 対象言語: JavaScript / Node.js
- 役割: パッケージをインストールし、管理するためのツール。
- 用途: プロジェクトで継続的に使用するライブラリ(例: React, Express)をインストールする際に使用します。
npm installで実行し、パッケージはプロジェクト内のnode_modulesに保存されます。 - イメージ: 永続的な利用を目的としています。
npx (Node Package Execute)¶
- 対象言語: JavaScript / Node.js
- 役割: パッケージをインストールせずに一度だけ実行するためのツール。
- 用途: プロジェクトの雛形作成(例:
create-react-app)など、一度きりのコマンド実行に便利です。PCやプロジェクトの環境を汚さずに済みます。 - イメージ: 一時的な利用を目的としています。
uv¶
- 対象言語: Python
- 役割: Pythonのパッケージとプロジェクトを管理するための、Rust製の高速ツール。
pip,pip-tools,pipx,poetry,pyenv,virtualenvなどを1つで置き換えることを掲げています。 - 用途: Python標準のパッケージ管理ツール
pipの代替として利用されます。uv pip install <パッケージ名>のように使い、Pythonの仮想環境にパッケージをインストールします。 - イメージ: Pythonにおける永続的な利用(管理)が主目的ですが、一時実行(後述の
uvx)も提供します。
詳細比較¶
| 目的 | JavaScript(Node.js) | Python(uv) |
|---|---|---|
| 永続インストール(プロジェクトで継続利用) | npm install |
uv pip install / uv add |
| 一時実行(インストールせず一度だけ実行) | npx |
uvx(= uv tool run の別名) |
| ツールを永続インストール(PATH に常駐) | npm install -g |
uv tool install |
uvxは uv 公式がuv tool runの別名として提供しているコマンドで、「ツールをインストールせずに呼び出す」点でnpxに相当します(一時的・隔離環境で実行)。以前のuvには npx 相当の一時実行がなくpipxを使う必要がありましたが、現在はuvxがその役割を担います。
比較表¶
| コマンド | 対象言語 | 主な役割 | 利用シーン |
|---|---|---|---|
npm |
JavaScript | パッケージのインストール・管理 | 永続的 |
npx |
JavaScript | パッケージの一時的な実行 | 一時的 |
uv |
Python | パッケージ・プロジェクトの高速インストール・管理 | 永続的(管理) |
uvx |
Python | ツールをインストールせず一時実行(uv tool run の別名) |
一時的 |
よくある誤解¶
- 誤解1:「npx と uv は同じ役割で、言語を変えただけ」 — 誤りです。
npxは「インストールせず一度だけ実行」する JavaScript/Node.js のツール、uvは Python のパッケージ/プロジェクト管理ツールです。役割も生態系も異なります。Python でnpxに相当する一時実行をしたいなら、uv本体ではなくuvx(=uv tool run)を使います。 - 誤解2:「uv には npx のような一時実行コマンドが存在しない」 — 現在は誤り(情報が古い)です。
uvにはuvx(uv tool runの別名)があり、ツールをインストールせず隔離環境で一度だけ実行できます。以前はpipx runを使う必要がありましたが、uvがpipxの役割も取り込みました。 - 誤解3:「npm と npx は別物のパッケージマネージャ」 — 不正確です。
npxは npm に同梱されるコマンドで、目的が「実行(execute)」に特化しているだけです。両者は対立せず、npm=インストール/管理、npx=実行、と役割分担しています。 - 誤解4:「uv は pip より速いだけの pip ラッパー」 — 不正確です。
uvは Rust 製で、pipだけでなくpip-tools・pipx・poetry・pyenv・virtualenvなどの機能を1つに統合する、より広いスコープのツールです。
実務での選び分け¶
- Node.js プロジェクトでライブラリを継続利用したい →
npm install(package.jsonに記録、node_modulesに保存)。 - Node.js のツールを雛形生成などで一度だけ叩きたい →
npx <tool>(環境を汚さない)。 - Python のパッケージ/プロジェクトを管理したい →
uv(uv pip installまたはuv add、仮想環境管理も含む)。 - Python のツールをインストールせず一度だけ実行したい →
uvx <tool>(=uv tool run)。古い資料のpipx run相当。 - 判断軸:①どの言語の生態系か(Node.js か Python か) ②「管理(永続)」したいのか「一度だけ実行(一時)」したいのか。この2点を決めれば対応コマンドが一意に決まります。
ひとことまとめ¶
npm/npx は Node.js 側(管理/一時実行)、uv/uvx は Python 側(管理/一時実行)。生態系が違うので置き換え関係ではなく、「言語 × 永続か一時か」で対応コマンドを選びます。
出典・参考¶
- npm 公式ドキュメント「About npm」(Node.js のパッケージマネージャ、
npm installでnode_modulesに依存を導入): https://docs.npmjs.com/about-npm - npm 公式 CLI「npx」(パッケージをインストールせずコマンドを実行する): https://docs.npmjs.com/cli/v10/commands/npx
- uv 公式ドキュメント(Rust 製の高速な Python パッケージ/プロジェクトマネージャ。
pip,pip-tools,pipx,poetry,pyenv,virtualenv等を1つで置き換える): https://docs.astral.sh/uv/ - uv 公式「Tools」(
uvxはuv tool runの別名で、ツールをインストールせず隔離環境で実行する): https://docs.astral.sh/uv/guides/tools/