初心者向け | Pythonの全体的な構造は? パッケージ管理・仮想環境などを簡単に解説
Pythonの全体像は、「本体(言語)」「パッケージ管理(工具箱)」「仮想環境(作業部屋)」の3層構造で理解するとスッキリします。
今回は、Pythonの全体構造をまとめました。
Pythonの全体構造図
イメージとしては、Python本体が「エンジン」で、pipが「パーツを取り寄せる業者」です。
① Python本体と標準ライブラリ
インストールすると最初から使える道具箱です。数学計算 (math) や時間の管理 (datetime) など、基本的な機能が含まれています。
② 外部パッケージ(PyPI)
世界中の開発者が作った便利な道具(ライブラリ)が集まる巨大な倉庫が PyPI (Python Package Index) です。
データ分析ならpandas、Webサイトを作るならDjangoなど。
③ pip(ピップ)
PyPIという倉庫から、自分のパソコンに道具をダウンロードしてくるためのツールです。
コマンドの例:pip install pandas
「仮想環境」という重要なコンセプト
Pythonを学んでいると必ず仮想環境(venvなど)という言葉が出てきます。これはプロジェクトごとに作る専用の作業部屋のことです。
仮想環境が必要な理由は、プロジェクトAでは「バージョン1.0」が必要、プロジェクトBでは「バージョン2.0」が必要…という衝突を防ぐためです。
代表的なツールとして、「venv (標準)」「Conda」「Poetry」などがあります。
開発の流れ
1. Pythonをインストール
パソコンにエンジンを載せる
2. 仮想環境をつくる
そのプロジェクト専用の「部屋」を用意する
3. pipでインストール
その部屋に必要な「道具」を外部から持ってくる
4. コードを書く
道具を使ってプログラムを組み立てる
標準ライブラリ
Pythonの標準ライブラリは、よく「Batteries Included(電池付属)」というフィロソフィで語られます。これは、箱を開けてすぐに(追加インストールなしで)本格的な作業ができるという意味です。
Pythonの標準ライブラリの数は200以上のモジュールに及び、日常的なタスクのほとんどをカバーできるほどのボリュームがあります。
標準ライブラリでできることの分類
すべての機能を覚える必要はありませんが、以下のようなカテゴリーで整理すると全体像が見えてきます。
1. 基本的なデータ処理
数学・計算 (math, statistics)
三角関数、統計計算
日付・時間 (datetime, time)
カレンダー計算やタイムゾーン処理
テキスト処理 (re, string)
正規表現による高度な文字列検索
2. ファイルとOS操作
ファイル操作 (os, shutil)
フォルダの作成、ファイルのコピー・削除
パス操作 (pathlib)
WindowsやMacの違いを気にせずパスを扱う
圧縮・展開 (zipfile, tarfile)
ZIPファイルの作成や解凍
3. インターネット・通信
Web関連 (urllib, http)
ウェブサイトのデータ取得
メール送信 (smtplib)
プログラムからのメール送信
JSON処理 (json)
Webアプリでよく使うデータ形式の読み書き
4. 開発・デバッグ支援
並列処理 (threading, multiprocessing)
複数の処理を同時に動かす
テスト (unittest)
プログラムが正しく動くか自動チェックする
デバッグ (pdb)
バグを見つけるためのステップ実行
標準ライブラリと外部ライブラリの境界線
標準にないものを知ると、より理解が深まります。
| 標準ライブラリ(最初からある) | 外部ライブラリ(pipで入れる) | |
|---|---|---|
| GUI作成 | tkinter (簡易的なもの) | PyQt, Kivy (リッチな画面) |
| データ分析 | なし(基礎計算のみ) | pandas, numpy |
| AI・機械学習 | なし | PyTorch, TensorFlow, scikit-learn |
| 画像処理 | なし | Pillow, OpenCV |
標準ライブラリと外部ライブラリの使い分け
標準ライブラリと外部ライブラリの使い分けは、「汎用的な道具」か「専門特化した重機」かというイメージで考えると非常に分かりやすくなります。
それぞれの代表例を、具体的な利用シーンと合わせてご紹介します。
1. 標準ライブラリの代表例(基礎・汎用)
Pythonをインストールした瞬間から使える基本セットです。
| ライブラリ名 | できることの例 | 利用シーン |
os / pathlib | フォルダ作成、ファイル一覧取得 | 大量のファイルの名前を一括で変更する |
datetime | 日付の計算、曜日の判定 | 「今日から30日後」を計算して通知する |
csv / json | CSVファイルやJSONの読み書き | Excelデータ(CSV)を読み込んで整理する |
re | 正規表現(文字パターンの抽出) | 文中からメールアドレスだけを抜き出す |
sqlite3 | 簡易データベースの操作 | 小規模なアプリのデータを保存する |
2. 外部ライブラリの代表例(専門・高度)
pip install で追加する、特定の分野に特化した強力なツール群です。
A. データサイエンス・機械学習
Pythonが世界的に人気の理由はこの分野にあります。
numpy | 超高速な数値計算(行列計算など) |
pandas | 表データの集計・加工。Excelのような操作をコードで行う |
scikit-learn | 機械学習(予測、分類)のアルゴリズム |
PyTorch / TensorFlow | ディープラーニング(生成AIや画像認識など) |
B. Web開発・自動化
requests | インターネット上の情報を取得する(標準のurllibより簡単) |
BeautifulSoup / Selenium | ウェブスクレイピング(Webサイトから情報を自動収集) |
Django / Flask / FastAPI | Webアプリのサーバー側を作る |
openpyxl | Excelファイルを、書式(色や枠線)も含めて直接操作する |
C. 画像・可視化
Pillow (PIL) | 画像のリサイズ、加工、フィルター処理 |
OpenCV | 高度な画像処理やリアルタイム顔認識 |
matplotlib / seaborn | グラフの作成、データの可視化 |
どちらを使うべきかの判断基準
何かを作りたいとき、まずは以下の順番で検討するのがセオリーです。
標準ライブラリでできないか?
外部への依存が減り、プログラムが軽く、配布しやすくなります。
標準だとコードが複雑になりすぎないか?
例えば、標準の urllib でWebアクセスするのは少し面倒ですが、外部の requests なら1行で書けます。楽をしたいなら外部ライブラリです。
その分野のデファクトスタンダードは何か?
データ分析なら pandas を使うのが当たり前になっています。定番を使うと、ネットに情報が多く、開発がスムーズです。
例えばこんな時はどっち?
「Webサイトから商品価格を毎日取得して、Excelに保存したい」
- サイトへのアクセス →
requests(外部) - 情報の抜き出し →
BeautifulSoup(外部) - Excelへの書き込み →
openpyxl(外部) - 実行した日付を記録 →
datetime(標準)
このように組み合わせて使います。







