Day 22:仮想環境で「安全にPythonを育てる」感覚を身につける
Day 22では、Python開発でとても重要な「仮想環境」について学びます。 pip・パッケージ・venv・仮想環境・requirements.txt を通して、 「プロジェクトごとに環境を分ける」「依存関係をきれいに管理する」感覚を身につけていきます。
パッケージとpip:Pythonの「追加機能」をインストールする仕組み
パッケージとは何か
Python本体だけでも多くのことができますが、 「Web開発」「データ分析」「機械学習」などを行うときには、 外部のライブラリ(=パッケージ)をインストールして使うことが一般的です。
- パッケージ:Pythonで使える「追加機能のまとまり」
- 例:
requests(HTTP通信)、numpy(数値計算)、pandas(データ分析)など
- 例:
これらをインストールするための標準的なツールが pip です。
pipの基本的な使い方
ターミナル(またはコマンドプロンプト)で次のように入力します。
bash
pip install requests
これで、requests というパッケージがインストールされます。 Pythonコードからは次のように使います。
import requests # インストールしたパッケージを読み込みます
response = requests.get("https://example.com")
print(response.status_code)
Pythonここでの重要ポイントは、
pipは「Pythonパッケージをインストールするための標準ツール」であること- インストールしたパッケージは
import パッケージ名で使えるようになること
です。
なぜ仮想環境が必要なのか:環境が「ぐちゃぐちゃ」になるのを防ぐ
よくあるトラブルのイメージ
仮想環境を使わないと、次のようなトラブルが起きやすくなります。
- プロジェクトAでは
requests==2.31.0を使っている - プロジェクトBでは
requests==2.25.0を使っている - どちらも同じPCにインストールしていると、バージョンが上書きされてしまう
結果として、
- 片方のプロジェクトが動かなくなる
- 「どのプロジェクトがどのバージョンを使っているか」が分からなくなる
という状態になりがちです。
仮想環境の役割
そこで登場するのが 仮想環境(virtual environment) です。
- プロジェクトごとに「独立したPython環境」を作る
- それぞれの環境に、必要なパッケージだけをインストールする
- 他のプロジェクトの環境とは干渉しない
という仕組みです。
イメージとしては、
- 「プロジェクトごとに専用のPythonフォルダを持つ」
- 「その中にだけパッケージを入れる」
という感じです。
venvで仮想環境を作る:標準機能で始める
仮想環境を作成する基本コマンド
Pythonには、仮想環境を作るための標準モジュール venv が用意されています。 ターミナルで次のように入力します。
bash
python -m venv venv
このコマンドの意味は、
python -m venv:Pythonに「venvモジュールを使って仮想環境を作って」と指示しているvenv:作成する仮想環境のフォルダ名(慣例的によくこの名前が使われます)
実行すると、カレントディレクトリに venv というフォルダが作られます。 このフォルダの中に、「その仮想環境専用のPython」と「専用のパッケージ置き場」が作られます。
仮想環境を「有効化」する
作っただけでは仮想環境は使われません。 「このターミナルでは仮想環境を使う」と宣言するために、有効化(activate) を行います。
Windowsの場合(PowerShellの例)
bash
venv\Scripts\Activate.ps1
macOS / Linuxの場合
bash
source venv/bin/activate
有効化に成功すると、ターミナルのプロンプトに (venv) のような表示が付きます。
bash
(venv) $
この状態で pip install をすると、「この仮想環境の中」にパッケージがインストールされます。
仮想環境内でpipを使う:プロジェクト専用のパッケージ管理
仮想環境内でのインストール
仮想環境を有効化した状態で、次のようにパッケージをインストールします。
bash
(venv) pip install requests
(venv) pip install numpy
これで、
- グローバルなPython環境には影響を与えず
venv仮想環境の中だけにrequestsとnumpyがインストールされます
Pythonコードからは、いつも通り import して使えます。
# main.py
import requests
import numpy as np
def main():
response = requests.get("https://example.com")
print("ステータスコード:", response.status_code)
arr = np.array([1, 2, 3])
print("配列:", arr)
if __name__ == "__main__":
main()
Python仮想環境を「抜ける」
仮想環境の利用を終えたいときは、次のコマンドで「無効化」します。
bash
(venv) deactivate
これで、ターミナルは元の環境に戻ります。
requirements.txt:環境を「再現可能」にする
なぜrequirements.txtが必要なのか
プロジェクトを他の人に渡したり、別のPCに移したりするときに、
- 「どのパッケージを、どのバージョンでインストールすればよいか」
を伝える必要があります。 そのための「一覧表」として使われるのが requirements.txt です。
requirements.txtを作る
仮想環境内で、現在インストールされているパッケージ一覧をファイルに書き出します。
bash
(venv) pip freeze > requirements.txt
これで、カレントディレクトリに requirements.txt が作られます。 中身は次のような形式です。
requests==2.31.0
numpy==1.26.0
pandas==2.2.0
- パッケージ名
==- バージョン番号
という形で、プロジェクトが依存しているパッケージが一覧されています。
requirements.txtから環境を再現する
別のPCや別の仮想環境で、同じ環境を再現したいときは、次のようにします。
bash
(venv) pip install -r requirements.txt
これで、
requirements.txtに書かれているパッケージが- 指定されたバージョンで
- 仮想環境内にインストールされます
つまり、「環境をコピーする」ことができます。
仮想環境+requirements.txtの「基本テンプレート」
プロジェクトを始めるときの流れ
- プロジェクト用フォルダを作るbash
mkdir my_project cd my_project - 仮想環境を作るbash
python -m venv venv - 仮想環境を有効化する
- Windows:bash
venv\Scripts\Activate.ps1 - macOS / Linux:bash
source venv/bin/activate
- Windows:bash
- 必要なパッケージをインストールするbash
(venv) pip install requests (venv) pip install numpy - コードを書くpython
# main.py import requests import numpy as np def main(): response = requests.get("https://example.com") print("ステータスコード:", response.status_code) arr = np.array([1, 2, 3]) print("配列:", arr) if __name__ == "__main__": main() - requirements.txtを作るbash
(venv) pip freeze > requirements.txt
別の環境で再現するときの流れ
- プロジェクトフォルダをコピー(またはGitでクローン)する
- 仮想環境を作るbash
python -m venv venv - 仮想環境を有効化する
requirements.txtからパッケージをインストールするbash(venv) pip install -r requirements.txtpython main.pyで実行する
Day 22ミニテンプレート:仮想環境チェック用スクリプト
仮想環境が正しく使えているかを確認するための、簡単なスクリプト例です。
# day22_env_check.py
# 仮想環境とパッケージが正しく動いているか確認するためのスクリプト
import sys
try:
import requests
except ImportError:
print("requests がインポートできません。仮想環境内で pip install requests を実行してください。")
sys.exit(1)
def main():
print("Python実行ファイル:", sys.executable)
print("仮想環境が有効になっている場合、そのパスは venv フォルダ配下になっているはずです。")
response = requests.get("https://example.com")
print("HTTPステータスコード:", response.status_code)
if __name__ == "__main__":
main()
Pythonこのスクリプトを仮想環境内で実行すると、
sys.executableのパスがvenvフォルダ配下になっているかrequestsが正しくインポートできているか
を確認できます。
Day 22のまとめ
Day 22では、仮想環境を通して、
pipとパッケージの基本的な役割venvで仮想環境を作成・有効化・無効化する流れ- プロジェクトごとに環境を分けることで、依存関係の「ぐちゃぐちゃ」を防ぐ考え方
requirements.txtで環境を「再現可能」にする方法- 仮想環境+
requirements.txtを使った、プロジェクト開始〜共有までの基本テンプレート
をステップバイステップで体験していただきました。
ここまで来ると、「Pythonのコードだけでなく、そのコードが動く環境も設計する」という感覚が少し育っているはずです。 この感覚は、今後の実践Python編で、より大きなプロジェクトやチーム開発に進んでいくうえで、とても重要な土台になっていきます。
