Python の環境とコーディング規約の要点
内容の確認日: 2026-10-04
この分野は『Python実践レシピ』の第 1 章 (Python の環境・1 問) と第 2 章 (コーディング規約・2 問) に対応します。コードの実行結果ではなく、ツールの使い方や規約の内容を問う知識問題が中心です。
改訂新版では、第 1 章にパッケージマネージャー uv、第 2 章に静的コード解析ツール Ruff の節が加わりました。どちらも現在の Python 開発でよく使われるツールです。
pip によるパッケージの管理
pip は、PyPI (Python Package Index) などからパッケージをインストールするツールです。いま使っている Python に対応する pip を確実に使うため、python -m pip の形で実行するのがおすすめです。
・pip install パッケージ: インストール。"requests==2.32.3"・">=2.0"・"~=2.32" のようにバージョンを指定できる
・pip install -U パッケージ: 最新版に更新
・pip install -r requirements.txt: ファイルに書かれたパッケージをまとめてインストール
・pip freeze: インストール済みのパッケージをバージョン付きで出力 (> requirements.txt で保存)
・pip list・pip show パッケージ: 一覧・詳細
・pip uninstall パッケージ: 削除。依存しているパッケージは残る
・pip install -e .: 編集可能モード。ソースの変更が再インストールなしで反映される
venv による仮想環境
仮想環境は、プロジェクトごとに独立したパッケージのインストール先を作る仕組みです。プロジェクトごとに違うバージョンのパッケージを使え、システム全体の Python を汚しません。
標準ライブラリの venv で作り、有効にしてから pip でインストールします。
python -m venv .venv # 仮想環境を作るsource .venv/bin/activate # 有効にする (macOS・Linux).venv\Scripts\activate # 有効にする (Windows)python -m pip install requestsdeactivate # 無効にする仮想環境のディレクトリは中に絶対パスなどを含み、ほかの環境に移すことを想定していないので、Git などのバージョン管理には含めず、依存パッケージの一覧から作り直します。プログラムからは、sys.prefix (いまの環境) と sys.base_prefix (元の Python) が異なるかどうかで、仮想環境の中かを判定できます。
import sysin_venv = sys.prefix != sys.base_prefixprint("仮想環境の中" if in_venv else "仮想環境の外")パッケージマネージャー uv
uv は Astral 社が Rust で開発している、高速なパッケージ・プロジェクト管理ツールです。標準ライブラリではないので、別途インストールします。pip・venv・pyenv (Python のバージョン管理) などの役割を 1 つでこなせます。
・uv init: プロジェクト (pyproject.toml など) を作る
・uv add パッケージ: 依存を追加し、pyproject.toml とロックファイル uv.lock を更新する。uv remove で削除
・uv sync: ロックファイルのとおりに仮想環境 (.venv) をそろえる
・uv run スクリプト: 必要に応じて環境を作成・同期してから実行する
・uv python install 3.14: Python 本体をインストールして使い分ける
・uvx ツール (uv tool run): ツールを一時的な環境で実行する
pyproject.toml には「requests>=2.32」のような依存の条件を書き、ロックファイルには、間接的な依存も含めて実際に選ばれた正確なバージョンを記録します。ロックファイルをバージョン管理に含めて共有すると、開発者の手元・CI・本番で同じ構成を再現できます。
PEP 8 (コーディング規約)
PEP 8 は Python 標準のスタイルガイドです。主な内容は次のとおりです。
・インデントは空白 4 つ。1 行は最大 79 文字 (docstring やコメントは 72 文字)
・トップレベルの関数・クラスの間は 2 行、クラス内のメソッドの間は 1 行空ける
・import はファイルの先頭に、1 行に 1 モジュールずつ書き、標準ライブラリ → サードパーティ → 自分のモジュールの順にグループ分けする
・命名: 関数・変数・メソッドは snake_case、クラスは CapWords、定数は UPPER_CASE、モジュールは短い小文字。メソッドの第 1 引数は self・cls
・None との比較は is / is not。真偽値を == True で比べない。空のシーケンスは if not items: で判定する
・かっこの内側に空白を入れない。キーワード引数の既定値の = の前後に空白を入れない (型ヒントがあるときは入れる)
import osimport sysimport requestsMAX_RETRY = 3class HttpClient: def get(self, url: str, timeout: int = 10) -> dict | None: if not url: return None return {"url": url}def main(verbose=False): client = HttpClient() if client.get("/") is not None: print(sys.argv, os.sep)静的コード解析ツール Ruff
Ruff は Astral 社が Rust で開発している、高速なリンター兼フォーマッターです。flake8 (リンター)・isort (import の並べ替え)・Black (フォーマッター) などの役割を 1 つでこなせます。コードは実行せず、静的に解析します。
・ruff check: 未使用の import・未定義の名前・PEP 8 の違反などを検出する。ルールは F401 (未使用の import) のようなコードで表す
・ruff check --fix: 自動で修正できるものを直す
・ruff format: コードを決まった形式に整形する (--check で変更せず確認だけ)
設定は pyproject.toml の [tool.ruff] テーブル (リンターは [tool.ruff.lint]) に書きます。select で有効にするルールを、コードの接頭辞で指定します (E・W は pycodestyle、F は Pyflakes、I は isort 相当)。既定では F と E の一部が有効です。
[tool.ruff]line-length = 88[tool.ruff.lint]select = ["E", "F", "I"]試験でよくある引っかけ
pip uninstallと依存パッケージ指定したパッケージだけが削除され、依存していたパッケージは残ります。
仮想環境はコピーして使わない
仮想環境のディレクトリはバージョン管理に含めず、依存の一覧から作り直します。
uv は標準ライブラリではない
venvは標準ライブラリですが、uv と Ruff は別途インストールするツールです。pyproject.tomlとロックファイルpyproject.tomlは依存の条件、ロックファイルは実際に選ばれた正確なバージョンを記録します。PEP 8 の
importimport os, sysのように 1 行にまとめず、1 行に 1 モジュールずつ書きます。Noneとの比較== Noneではなくis Noneと書きます。ruff checkとruff formatruff checkは問題の検出 (--fixで修正)、ruff formatは整形です。
問題で確認する
この分野の問題を、解説つきで読めます (登録不要)。
出典・参考
- Python エンジニア育成推進協会「Python 実践試験」(出題範囲)
- Python ドキュメント「venv」
- PEP 8 – Style Guide for Python Code
- uv のドキュメント
- Ruff のドキュメント
コード例は、実際に実行して結果を確認しています。