Ubuntu 22.04 に uv で Python をインストールする方法(最新バージョン・バージョン切り替え)

Ubuntu 22.04 サーバーに uv で最新の Python をインストールし、複数バージョンのインストールとプロジェクトごとのバージョン変更、仮想環境とパッケージのインストール、uv コマンドが見つからないエラーと ModuleNo…

Ubuntu 22.04Python 3.15x86_64約 20 分

検証済みのドキュメントです

クラウドサーバーを作成し、このドキュメントのコマンドを最初から最後までそのまま実行して確認したドキュメントです。

OS
Ubuntu 22.04.5 LTS · x86_64
インストールしたバージョン
Python 3.15.0, Python 3.13.16, uv 0.13.1
テストサーバー
DigitalOcean · 2 vCPU / 2 GB RAM / 60 GB SSD (s-2vcpu-2gb, sgp1)
最終確認
2026-10-16

このドキュメントにはアフィリエイトリンクが含まれています。リンクから登録するとコードサンドが手数料を受け取ることがありますが、内容や評価には影響しません。

Ubuntu 22.04 サーバーに uv で最新の Python をインストールし、複数バージョンのインストールとプロジェクトごとのバージョン変更、仮想環境とパッケージのインストール、uv コマンドが見つからないエラーと ModuleNotFoundError の対処、きれいにアンインストールする方法までまとめます。

1. 準備するもの

  • Ubuntu 22.04 LTS のサーバーまたは PC 1 台
  • sudo 権限のある一般ユーザーアカウント
  • インターネット接続(GitHub と PyPI からファイルをダウンロードします)

サーバーがない場合は、DigitalOcean で Droplet を作成してみてください。このドキュメントのすべての手順は、Droplet(2 vCPU・メモリ 2GB・60GB SSD・Ubuntu 22.04・シンガポール)でサーバーを作成し、sudo 権限のある一般ユーザーアカウントで確認しました。

2. インストール前の状態を確認

Ubuntu 22.04 には Python 3.10 が標準で入っています。システムのプログラムが使う Python なので、削除したり別のバージョンに置き換えたりしないでください。

python3 --version
Python 3.10.12

python コマンドはありません。Ubuntu は python3 という名前でのみ Python を提供しています。

python --version
Command 'python' not found, did you mean:
  command 'python3' from deb python3
  command 'python' from deb python-is-python3

パッケージをインストールする pip3 もなく、仮想環境を作る venv もすぐには使えません。

pip3 --version
Command 'pip3' not found, but can be installed with:
sudo apt install python3-pip
python3 -m venv myenv
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt install python3.10-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: /home/devuser/myenv/bin/python3

失敗した際に作りかけの myenv フォルダーが残るので削除します。出力はありません。

rm -rf myenv

Python 3.10 は2026年10月にサポートが終了したバージョンで、このドキュメントを確認した日の最新 Python は 3.15 でした。このドキュメントではシステムの Python はそのままにして、uv で最新の Python をユーザーフォルダーに別途インストールします。uv は Python のインストール、バージョン変更、仮想環境、パッケージのインストールを 1 つのプログラムで行うツールで、ビルド済みの Python をダウンロードするためインストールは 1 分以内に終わり、sudo も不要です。

3. uv のインストール

uv のインストールスクリプトをダウンロードして実行します。curl -LsSf は進行状況を表示せずにダウンロードし、失敗した場合はエラーを表示するという意味です。ダウンロードしたスクリプトは | sh に渡してすぐに実行します。このドキュメントでは確認した日の最新バージョンである uv 0.13.1 をインストールしました。

curl -LsSf https://astral.sh/uv/install.sh | sh
downloading uv 0.13.1 x86_64-unknown-linux-gnu
installing to /home/devuser/.local/bin
  uv
  uvx
everything's installed!

To add $HOME/.local/bin to your PATH, either restart your shell or run:

    source $HOME/.local/bin/env (sh, bash, zsh)
    source $HOME/.local/bin/env.fish (fish)

uv は ~/.local/bin フォルダーにインストールされ、このフォルダーをコマンドのパス(PATH)に追加する行が ~/.bashrc と ~/.profile の末尾に追加されます。

4. uv のインストール確認

インストールしたターミナルですぐに uv を実行すると、コマンドが見つからないというメッセージが表示されます。このターミナルは PATH が追加される前に開かれたためです。

uv --version
uv: command not found

インストールメッセージの案内どおり下のコマンドを実行するか、ターミナルを閉じて開き直します(SSH の場合は接続を切ってから再接続します)。出力はありません。

source $HOME/.local/bin/env
uv --version
uv 0.13.1 (x86_64-unknown-linux-gnu)

5. 最新の Python をインストール

バージョンを指定しないと、最新の Python がインストールされます。

uv python install
Installed Python 3.15.0 in 1.55s
 + cpython-3.15.0-linux-x86_64-gnu (python3.15)

インストールされている Python の一覧を確認します。uv がインストールした Python とシステムの Python(/usr/bin)が一緒に表示されます。

uv python list --only-installed
cpython-3.15.0-linux-x86_64-gnu     .local/bin/python3.15 -> .local/share/uv/python/cpython-3.15-linux-x86_64-gnu/bin/python3.15
cpython-3.15.0-linux-x86_64-gnu     .local/share/uv/python/cpython-3.15-linux-x86_64-gnu/bin/python3.15
cpython-3.10.12-linux-x86_64-gnu    /usr/bin/python3.10
cpython-3.10.12-linux-x86_64-gnu    /usr/bin/python3 -> python3.10

uv はインストールした Python を python3.15 のようにバージョン付きの名前でのみ登録します。そのため python3.15 は実行できますが、python は見つからないままです。

python3.15 --version
Python 3.15.0
python --version
Command 'python' not found, did you mean:
  command 'python3' from deb python3
  command 'python' from deb python-is-python3

python と python3 でも Python 3.15 を実行するには、--default を付けて再度インストールします。Python はすでにダウンロード済みなので、名前だけが追加されます。このオプションはまだ試験的な機能のため警告が表示されますが、インストールには問題ありません。

uv python install 3.15 --default
warning: The `--default` option is experimental and may change without warning. Pass `--preview-features python-install-default` to disable this warning
Installed Python 3.15.0 in 81ms
 + cpython-3.15.0-linux-x86_64-gnu (python, python3)
python --version
Python 3.15.0
python3 --version
Python 3.15.0
which python
/home/devuser/.local/bin/python

6. 別のバージョンをインストール

別のバージョンが必要な場合は、バージョン番号を指定してインストールします。3.13 のように指定すると、3.13 系の最新バージョンがインストールされます。

uv python install 3.13
Installed Python 3.13.16 in 1.65s
 + cpython-3.13.16-linux-x86_64-gnu (python3.13)
uv python list --only-installed
cpython-3.15.0-linux-x86_64-gnu     .local/bin/python3.15 -> .local/share/uv/python/cpython-3.15-linux-x86_64-gnu/bin/python3.15
cpython-3.15.0-linux-x86_64-gnu     .local/bin/python3 -> .local/share/uv/python/cpython-3.15-linux-x86_64-gnu/bin/python3.15
cpython-3.15.0-linux-x86_64-gnu     .local/bin/python -> .local/share/uv/python/cpython-3.15-linux-x86_64-gnu/bin/python3.15
cpython-3.15.0-linux-x86_64-gnu     .local/share/uv/python/cpython-3.15-linux-x86_64-gnu/bin/python3.15
cpython-3.13.16-linux-x86_64-gnu    .local/bin/python3.13 -> .local/share/uv/python/cpython-3.13-linux-x86_64-gnu/bin/python3.13
cpython-3.13.16-linux-x86_64-gnu    .local/share/uv/python/cpython-3.13-linux-x86_64-gnu/bin/python3.13
cpython-3.10.12-linux-x86_64-gnu    /usr/bin/python3.10
cpython-3.10.12-linux-x86_64-gnu    /usr/bin/python3 -> python3.10

Python 3.13 は python3.13 で実行でき、python は 3.15 のままです。プロジェクトごとに別のバージョンを使う方法はステップ 8 で説明します。

7. 最初のプロジェクトを作成してパッケージをインストール

uv はプロジェクトフォルダーごとに仮想環境(.venv)を作成し、パッケージを個別に管理します。新しいターミナルを開いて hello-python プロジェクトを作成します。--no-package は配布用のパッケージ構成を作らず、main.py 1 つで始めるという意味です。

uv init --no-package hello-python
Initialized project `hello-python` at `/home/devuser/hello-python`
cd hello-python
ls -a
.  ..  .git  .gitignore  .python-version  README.md  main.py  pyproject.toml

.python-version はこのプロジェクトで使う Python のバージョンが書かれたファイルです。インストールされている Python のうち最新の 3.15 が書かれています。main.py にはあいさつを出力するサンプルが入っています。

cat .python-version
3.15
cat main.py
def main():
    print("Hello from hello-python!")


if __name__ == "__main__":
    main()

プロジェクトのファイルは uv run で実行します。初回は仮想環境(.venv)を作成してから実行します。

uv run main.py
Using CPython 3.15.0
Creating virtual environment at: .venv
Hello from hello-python!

パッケージは uv add でインストールします。HTTP リクエストを送る requests パッケージをインストールしてみます。インストールしたパッケージはプロジェクトの仮想環境にだけ入り、pyproject.toml に記録されます。

uv add requests
Resolved 6 packages in 154ms
Prepared 5 packages in 41ms
Installed 5 packages in 9ms
 + certifi==2026.7.22
 + charset-normalizer==3.5.2
 + idna==3.20
 + requests==2.34.2
 + urllib3==2.8.0

main.py を requests を使うコードに書き換えて実行します。1 行目は引用符の中の内容でファイルを作るコマンドなので、出力はありません。

echo "import sys, requests; print('Hello Python', sys.version.split()[0], 'requests', requests.__version__)" > main.py
uv run main.py
Hello Python 3.15.0 requests 2.34.2

同じファイルを python で直接実行すると、requests が見つからないというエラーになります。requests はプロジェクトの仮想環境にだけインストールされているためです。

python main.py
Traceback (most recent call last):
  File "/home/devuser/hello-python/main.py", line 1, in <module>
    import sys, requests; print('Hello Python', sys.version.split()[0], 'requests', requests.__version__)
    ^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'requests'

uv run を使わずに python で実行したい場合は、仮想環境を有効化(activate)します。有効化のコマンドは出力がありません。終わったら deactivate で無効にします。

source .venv/bin/activate
python --version
Python 3.15.0
python main.py
Hello Python 3.15.0 requests 2.34.2
deactivate

8. プロジェクトごとに Python のバージョンを決める

プロジェクトを作成するときに --python でバージョンを指定できます。ホームフォルダーに戻り、Python 3.13 を使う old-project を作成します。

cd ~
uv init --no-package --python 3.13 old-project
Initialized project `old-project` at `/home/devuser/old-project`
cd old-project
cat .python-version
3.13

uv run python --version で、このプロジェクトで実行される Python を確認します。

uv run python --version
Using CPython 3.13.16
Creating virtual environment at: .venv
Python 3.13.16

後でバージョンを上げるときは uv python pin を使います。.python-version ファイルが変わり、次の実行時に新しいバージョンで仮想環境が作り直されます。

uv python pin 3.15
Updated `.python-version` from `3.13` -> `3.15`
uv run python --version
Using CPython 3.15.0
Removed virtual environment at: .venv
Creating virtual environment at: .venv
Python 3.15.0

逆に、低いバージョンへすぐに下げることはできません。ステップ 9 の「requires-python」の項目を参照してください。

9. トラブルシューティング

uv: command not found

uv をインストールする前に開いていたターミナルで実行したという意味です。このターミナルは ~/.local/bin が PATH に追加される前に開かれました。ターミナルを閉じて開き直すか、source $HOME/.local/bin/env を実行してください。新しいターミナルでも同じ場合は、grep -n 'local/bin/env' ~/.bashrc で PATH を追加する行があるか確認してください。

ModuleNotFoundError: No module named 'requests'

uv add でインストールしたパッケージは、プロジェクトの仮想環境(.venv)にだけあります。python main.py のように直接実行すると、仮想環境の外の Python が実行されてパッケージを見つけられません。uv run main.py で実行するか、source .venv/bin/activate で仮想環境を有効にしてから実行してください。

python main.py
Traceback (most recent call last):
  File "/home/devuser/hello-python/main.py", line 1, in <module>
    import sys, requests; print('Hello Python', sys.version.split()[0], 'requests', requests.__version__)
    ^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'requests'
error: The requested Python version `3.13` is incompatible with the project `requires-python` value of `>=3.15`.

プロジェクト作成時の Python のバージョンが pyproject.toml の requires-python に最小バージョンとして記録されるため、それより低いバージョンには uv python pin できません。低いバージョンがどうしても必要な場合は、先に pyproject.toml の requires-python の値を下げるか、ステップ 8 のように最初から --python でバージョンを指定してプロジェクトを作成してください。

uv python pin 3.13
error: The requested Python version `3.13` is incompatible with the project `requires-python` value of `>=3.15`.
The virtual environment was not created successfully because ensurepip is not available.

システムの Python(3.10)で python3 -m venv を実行すると表示されるメッセージです。Ubuntu のシステムの Python には、仮想環境の作成に必要なパッケージが含まれていません。uv で作ったプロジェクトは uv が仮想環境を作るため、このパッケージは不要です。システムの Python で仮想環境を作る必要がある場合は、メッセージの案内どおり sudo apt install python3.10-venv でインストールしてください。

10. アンインストール

ホームフォルダーに戻り、uv でインストールした Python をすべて削除します。python、python3 など ~/.local/bin に登録した名前も一緒に削除されます。システムの Python は削除されません。

cd ~
uv python uninstall --all
Searching for Python installations
Uninstalled 2 versions in 156ms
 - cpython-3.13.16-linux-x86_64-gnu (python3.13)
 - cpython-3.15.0-linux-x86_64-gnu (python, python3, python3.15)

uv がダウンロードしたファイルを保管するキャッシュを削除します。

uv cache clean
Clearing cache at: .cache/uv
Removed 156 files (1.0MiB)

uv のツールフォルダーと練習用のプロジェクトフォルダーを削除し、uv のプログラムと PATH の設定ファイル(env、env.fish)を削除します。どちらのコマンドも出力はありません。

rm -rf "$(uv tool dir)" ~/hello-python ~/old-project
rm ~/.local/bin/uv ~/.local/bin/uvx ~/.local/bin/env ~/.local/bin/env.fish

ステップ 3 で ~/.bashrc と ~/.profile に追加された行を確認して削除します。sed -i はファイルを直接書き換えるという意味で、/local\/bin\/env/d は local/bin/env を含む行を削除するという意味です。

grep -n 'local/bin/env' ~/.bashrc ~/.profile
/home/devuser/.bashrc:119:. "$HOME/.local/bin/env"
/home/devuser/.profile:29:. "$HOME/.local/bin/env"
sed -i '/local\/bin\/env/d' ~/.bashrc ~/.profile
ls -a ~/.local/bin
.  ..

ターミナルを閉じて開き直し、確認します。uv が見つからず、python3 がシステムの Python に戻っていれば削除されています。

uv --version
uv: command not found
python3 --version
Python 3.10.12

実際に試してみる

サーバーがなければ、以下のサービスで数分あれば Ubuntu サーバーを作れます。 このドキュメントは DigitalOcean で検証しました。