タイトル : python uv Ubuntu25.10を使ってみる 新GPUマシン
更新日 : 2026-03-14
カテゴリ : プログラミング
良い機会なので uv に切り替えましょう。uvでpythonを使えるようにしましょう。
uvは初めてなのでとりあえず今回は使ってみるところまでで。uvの勉強は別途ちゃんとやろうね。
インストール
$ curl -LsSf https://astral.sh/uv/install.sh | sh
downloading uv 0.10.10 x86_64-unknown-linux-gnu
no checksums to verify
installing to /home/prost/.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)
$ 上記にあるように、.bashrc に . "$HOME/.local/bin/env" の一行が追加されて、
$HOME/.local/bin に uvとuvxが入ってますね。
$ cd $HOME/.local/bin
$ ls
env env.fish uv uvx
$ ls -l
total 55076
-rw-rw-r-- 1 prost prost 328 Mar 14 12:34 env
-rw-rw-r-- 1 prost prost 165 Mar 14 12:34 env.fish
-rwxr-xr-x 1 prost prost 56032056 Mar 14 04:46 uv
-rwxr-xr-x 1 prost prost 353408 Mar 14 04:46 uvx
$ バージョン
$ uv --version
uv 0.10.10
$ちなみに env は以下の内容
$ cat $HOME/.local/bin/env
#!/bin/sh
# add binaries to PATH if they aren't added yet
# affix colons on either side of $PATH to simplify matching
case ":${PATH}:" in
*:"$HOME/.local/bin":*)
;;
*)
# Prepending path in case a system-installed binary needs to be overridden
export PATH="$HOME/.local/bin:$PATH"
;;
esac
$確認 fastapi
バージョン指定して、ディレクトリ名も指定して(デフォルトは.venv)、プロジェクトをinit
$ uv init --python 3.14 fastapi_sample2026
Initialized project `fastapi-sample2026` at `/home/prost/work/Python/fastapi_sample2026`
$ ls -ltd *
drwxrwxr-x 3 prost prost 4096 Mar 14 12:46 fastapi_sample2026
$どんなファイルが出来たのかな
$ cd fastapi_sample2026/
$ ls -la
total 28
drwxrwxr-x 3 prost prost 4096 Mar 14 12:46 .
drwxrwxr-x 3 prost prost 4096 Mar 14 12:46 ..
drwxrwxr-x 6 prost prost 4096 Mar 14 12:46 .git
-rw-rw-r-- 1 prost prost 109 Mar 14 12:46 .gitignore
-rw-rw-r-- 1 prost prost 5 Mar 14 12:46 .python-version
-rw-rw-r-- 1 prost prost 0 Mar 14 12:46 README.md
-rw-rw-r-- 1 prost prost 96 Mar 14 12:46 main.py
-rw-rw-r-- 1 prost prost 164 Mar 14 12:46 pyproject.toml
$ vi main.py
$ cat main.py
def main():
print("Hello from fastapi-sample2026!")
if __name__ == "__main__":
main()
$ cat .python-version
3.14
$ cat pyproject.toml
[project]
name = "fastapi-sample2026"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.14"
dependencies = []
$ fastapiを動かしてみる
パッケージ追加
$ uv add fastapi uvicorn
Using CPython 3.14.3 ★このタイミングで 3.14.3が入ったみたい
Creating virtual environment at: .venv
Resolved 15 packages in 378ms
Prepared 13 packages in 232ms
Installed 13 packages in 3ms
+ annotated-doc==0.0.4
+ annotated-types==0.7.0
+ anyio==4.12.1
+ click==8.3.1
+ fastapi==0.135.1
+ h11==0.16.0
+ idna==3.11
+ pydantic==2.12.5
+ pydantic-core==2.41.5
+ starlette==0.52.1
+ typing-extensions==4.15.0
+ typing-inspection==0.4.2
+ uvicorn==0.41.0
$ 直下の.envの下
$ ls -l .venv/bin
total 56
-rw-rw-r-- 1 prost prost 4137 Mar 14 12:51 activate
-rw-rw-r-- 1 prost prost 2699 Mar 14 12:51 activate.bat
-rw-rw-r-- 1 prost prost 2667 Mar 14 12:51 activate.csh
-rw-rw-r-- 1 prost prost 4239 Mar 14 12:51 activate.fish
-rw-rw-r-- 1 prost prost 3809 Mar 14 12:51 activate.nu
-rw-rw-r-- 1 prost prost 2798 Mar 14 12:51 activate.ps1
-rw-rw-r-- 1 prost prost 2401 Mar 14 12:51 activate_this.py
-rw-rw-r-- 1 prost prost 1730 Mar 14 12:51 deactivate.bat
-rwxrwxr-x 1 prost prost 336 Mar 14 12:51 fastapi
-rw-rw-r-- 1 prost prost 1217 Mar 14 12:51 pydoc.bat
lrwxrwxrwx 1 prost prost 81 Mar 14 12:51 python -> /home/prost/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/bin/python3.14
lrwxrwxrwx 1 prost prost 6 Mar 14 12:51 python3 -> python
lrwxrwxrwx 1 prost prost 6 Mar 14 12:51 python3.14 -> python
-rwxrwxr-x 1 prost prost 337 Mar 14 12:51 uvicorn
$ python本体は /home/prost/.local/share/uv/python/cpython-3.14.3-linux-x86_64-gnu/bin/python3.14 の実体一つにして.venvの下にまとめる形ですね。
main.pyの書き換え
$ cat main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
def read_root():
return {"message": "Hello, UV!"}
$ uvicorn起動 と GET /hello呼び出し。uv runを使うのね
$ uv run uvicorn main:app --reload
INFO: Will watch for changes in these directories: ['/home/prost/work/Python/fastapi_sample2026']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [8956] using StatReload
INFO: Started server process [8958]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: 127.0.0.1:38116 - "GET /hello HTTP/1.1" 200 OK
$ curl http://127.0.0.1:8000/hello
{"message":"Hello, UV!"}$ 