手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Python の基本設定 – サーバー管理で使う実行環境を管理する

関連する記事

Ubuntu 26.04 で Python を使う場合、OS 付属の Python、APT で入れる Python パッケージ、仮想環境、pipx で入れる CLI ツールを分けて扱います。サーバー管理では、OS の Python を壊さず、用途ごとに実行環境を分けることが重要です。

この記事では、Python のバージョン確認、APT パッケージ、venvpippipx、proxy / CA、systemd から実行する時の確認を扱います。

Python の状態を確認する

まず OS に入っている Python と、関連パッケージの状態を確認します。

python3 --version
python3 -c 'import sys; print(sys.executable); print(sys.version)'
dpkg -l 'python3*' | awk '/^ii/{print $2, $3}'

基本パッケージを導入する

venvpippipx、開発ヘッダーなど、サーバー管理で使う基本パッケージを APT で導入します。

sudo apt update
sudo apt install python3 python3-venv python3-pip pipx python3-dev build-essential
python3 --version
pipx --version

OS 付属 Python と pip を分ける

Ubuntu の Python は OS パッケージ管理と結びついています。システム領域へ pip で直接入れるのではなく、APT、仮想環境、pipx を使い分けます。

  • OS が使う Python パッケージは APT で管理する。
  • アプリケーションや管理スクリプトの依存は venv に分ける。
  • CLI ツールは pipx で分ける。
  • 理由なく --break-system-packages を使わない。

仮想環境を作成する

管理スクリプトや小さなツールの依存関係は、プロジェクトごとに venv へ分けます。

mkdir -p ~/work/python-example
cd ~/work/python-example
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip --version

requirements.txt を使う

同じ環境を再作成できるように、依存パッケージをファイルで管理します。

tee requirements.txt >/dev/null <<'EOF'
requests
PyYAML
EOF
. .venv/bin/activate
python -m pip install -r requirements.txt
python -m pip freeze

pipx で CLI ツールを導入する

pipx は Python 製 CLI ツールを分離環境へ入れるために使います。ユーザー単位で入れるツールと、システム共通で使うツールを分けて考えます。

pipx ensurepath
pipx install httpie
pipx list
http --version

proxy 環境で確認する

proxy 環境では、APT と Python の取得経路が別になることがあります。環境変数と pip の設定を確認します。

printenv HTTP_PROXY
printenv HTTPS_PROXY
printenv NO_PROXY
python -m pip config list
python -m pip install --dry-run requests

内部 CA を確認する

内部 proxy や内部 PyPI を使う場合は、OS が内部 CA を信頼している必要があります。Python だけでなく、OS の CA ストアも確認します。

python -c 'import ssl; print(ssl.get_default_verify_paths())'
python -c 'import urllib.request; print(urllib.request.urlopen("https://www.python.org/", timeout=10).status)'
update-ca-certificates --verbose

systemd から Python を実行する

Python スクリプトを systemd service から実行する場合は、仮想環境内の Python を明示します。環境変数や作業ディレクトリも unit 側で確認します。

systemctl cat example-python.service
systemctl show example-python.service -p ExecStart -p WorkingDirectory -p Environment
journalctl -u example-python.service -b --no-pager

スクリプトの実行権限を確認する

直接実行するスクリプトでは、shebang、実行権限、参照する Python のパスを確認します。

head -n 1 script.py
chmod 0755 script.py
./script.py
python3 script.py

パッケージ更新を確認する

APT パッケージと仮想環境内の Python パッケージは別に更新します。OS 側の更新とアプリケーション依存の更新を混ぜないようにします。

sudo apt update
apt list --upgradable | grep '^python3' || true
. .venv/bin/activate
python -m pip list --outdated

確認項目

  • OS 付属 Python に直接 pip で依存パッケージを入れていないか。
  • 管理スクリプトごとに venv を分けているか。
  • CLI ツールを pipx で管理しているか。
  • proxy と内部 CA の影響を確認しているか。
  • systemd service から実行する Python のパスが明確か。
  • APT 更新と venv 内パッケージ更新を分けて確認しているか。

まとめ

Ubuntu 26.04 の Python 実行環境では、OS 付属 Python、APT パッケージ、venvpipx を分けて管理します。サーバー管理で使う Python は、依存関係、proxy、CA、systemd からの実行パスまで確認しておくと、運用中の変更や障害調査がしやすくなります。

関連する記事
Ubuntu 26.04 Python の基本設定 – サーバー管理で使う実行環境を管理する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る