複数のライブラリを毎回手作業でインストールするとミスや環境差異が発生しがちです。
requirements.txtに必要なパッケージ一覧を保存しておけば、pip install -r
で一括再現できます。
本記事では作り方から実行方法、つまずきやすいエラーの対処までを、初心者向けに丁寧に解説します。
requirements.txtと一括インストールの基本
requirements.txtとは?
requirements.txtは、Pythonプロジェクトで使用する外部ライブラリ(パッケージ)名とバージョンを1行ずつ列挙したテキストファイルです。
これを共有することで、他の開発者や別のPCでも同じライブラリ構成を再現できます。
同じrequirements.txtを使えば同じ環境を再現できるというのが最大の価値です。
以下は典型的な記述例です。
行頭の#
はコメントです。
# requirements.txt の例
requests==2.32.3 # HTTPクライアント
pandas~=2.2 # 互換のある最新の2.2系を許可(2.2.*)
numpy>=1.26,<2.0 # 上限/下限を明示して互換性を担保
tqdm # バージョン未指定(再現性は下がるので注意)
一括インストールのメリット
requirements.txtから一括インストールすることで、インストール漏れを防ぎ、開発者間の環境差を抑え、CIや本番サーバーへのデプロイも安定します。
プロジェクトの初回セットアップが数分で終わるため、オンボーディングもスムーズになります。
「人手で1つずつ入れる」より確実で高速です。
下表は主なメリットの整理です。
利用場面 | 期待できる効果 |
---|---|
新規開発者の参加 | セットアップ手順が短縮し、環境差異を減らす |
CI/CD | ビルド環境を再現しやすく、結果が安定 |
バグ再現 | 同一のパッケージ構成で検証が可能 |
セキュリティ対応 | versionsの固定により追跡・更新が容易 |
pip install -rの概要
pip install -r
は、ファイルに列挙されたパッケージを順に解決・インストールする機能です。
実行の基本形は次のとおりです。
# 現在のPythonに紐づくpipを明示的に使う(推奨)
python -m pip install -r requirements.txt
実行すると、pipはファイルを上から読み、依存関係を解決しながらインストールします。
必要に応じて--upgrade
や--no-cache-dir
、社内リポジトリ向けの--index-url
などのオプションも利用できます。
OSやPythonの組み合わせが異なると依存関係も変わりやすいため、後述の仮想環境(venv)でプロジェクトごとに分けるのが実務では定番です。
事前準備とrequirements.txtの作成
Python/pipの確認
まずは手元のPythonとpipが使えるか確認します。
環境によって実行コマンド名が異なる点に注意してください。
# Windows PowerShell の例
python --version # Pythonのバージョンを確認
python -m pip --version # pipのバージョンを確認
Python 3.11.9
pip 24.2 from C:\Path\to\Python311\Lib\site-packages\pip (python 3.11)
# macOS/Linux の例
python3 --version
python3 -m pip --version
Python 3.11.9
pip 24.2 from /usr/local/lib/python3.11/site-packages/pip (python 3.11)
Windowsで複数バージョンのPythonがある場合は、py
ランチャーが便利です。
# 指定バージョンのpipを明示
py -3.11 -m pip --version
仮想環境(venv)を使う前提
プロジェクトごとに環境を分けると、他プロジェクトへの影響や権限エラーを避けられます。
標準のvenv
で問題ありません。
# Windows: カレントフォルダに .venv を作成
python -m venv .venv
# PowerShellで仮想環境を有効化
.\.venv\Scripts\Activate.ps1
# pipを最新化(依存解決の精度向上のために推奨)
python -m pip install --upgrade pip
# macOS/Linux: venvを作成して有効化
python3 -m venv .venv
source .venv/bin/activate
# pipを最新化
python -m pip install --upgrade pip
(.venv) というプレフィックスがプロンプトに付き、仮想環境が有効化されたことを示します
# ユーザー範囲でスクリプト実行を許可
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
requirements.txtを作る(pip freeze)
既に環境に導入済みのライブラリをファイル化するにはpip freeze
が簡単です。
仮想環境を有効化してから実行します。
# 現在の環境に入っているパッケージと固定バージョンを出力
python -m pip freeze > requirements.txt
# 内容を確認
cat requirements.txt # Windowsなら 'type requirements.txt'
certifi==2024.7.4
charset-normalizer==3.3.2
idna==3.7
numpy==1.26.4
pandas==2.2.2
python-dateutil==2.9.0.post0
pytz==2024.1
requests==2.32.3
tqdm==4.66.4
urllib3==2.2.2
pip freezeは依存関係も含めて「すべて」固定します。
アプリが直接使っていないライブラリも入る点を理解しておくと良いです。
既存プロジェクトから最小限を書きたい場合
最初は手で作っても構いません。
必要なパッケージだけ列挙して、許容範囲の指定子(後述)を付ける方法もあります。
# 手書きの最小例
requests==2.32.3
pandas~=2.2
numpy>=1.26,<2.0
tqdm
バージョン固定のポイント
再現性を高めるには「どこまで固定するか」の方針が重要です。
本番やチーム共有では、原則としてバージョンを固定(==)するのが安全です。
学習・検証用途なら範囲指定でも構いません。
指定子 | 例 | 意味 |
---|---|---|
== | requests==2.32.3 | そのバージョンに完全固定 |
~= | pandas~=2.2 | 互換範囲(2.2.*)の最新を許可 |
>=,< | numpy>=1.26,<2.0 | 下限と上限を明示して互換性を担保 |
無指定 | tqdm | 常に最新を入れる(再現性は下がる) |
>=だけで上限を設けないと、将来のメジャーアップデートで壊れる可能性が高まります。
下限と上限をセットで書くか、==で固定するのが定石です。
上級者向けですが、依存グラフを解決して確定版を生成するpip-tools(pip-compile)
や、ハッシュ固定(サプライチェーン対策)の活用もあります。
最初はrequirements.txtの明示的な固定から始めれば十分です。
一括インストールの手順(pip install -r)
コマンド例(Windows)
以下はPowerShell前提の例です。
仮想環境を有効化してから実行してください。
# 1) プロジェクトのルートへ移動
Set-Location C:\path\to\your-project
# 2) 仮想環境を有効化(未作成なら前章を参照)
.\.venv\Scripts\Activate.ps1
# 3) pipを最新化(推奨)
python -m pip install --upgrade pip
# 4) requirements.txtから一括インストール
python -m pip install -r .\requirements.txt
Collecting requests==2.32.3 (from -r requirements.txt (line 1))
Downloading requests-2.32.3-py3-none-any.whl (64 kB)
Collecting pandas~=2.2 (from -r requirements.txt (line 2))
Downloading pandas-2.2.2-cp311-cp311-win_amd64.whl (11.2 MB)
Collecting numpy>=1.26,<2.0 (from -r requirements.txt (line 3))
Downloading numpy-1.26.4-cp311-cp311-win_amd64.whl (15.8 MB)
Collecting tqdm (from -r requirements.txt (line 4))
Downloading tqdm-4.66.4-py3-none-any.whl (78 kB)
Installing collected packages: tqdm, numpy, requests, pandas
Successfully installed numpy-1.26.4 pandas-2.2.2 requests-2.32.3 tqdm-4.66.4
補足: パスやファイル名に空白がある場合
python -m pip install -r ".\folder with space\requirements.txt"
コマンド例(macOS/Linux)
UNIX系でも基本は同じです。
python3
コマンドを使う環境が多い点に注意します。
# 1) プロジェクトへ移動
cd /path/to/your-project
# 2) 仮想環境を有効化
source .venv/bin/activate
# 3) pipを最新化(推奨)
python -m pip install --upgrade pip
# 4) 一括インストール
python -m pip install -r requirements.txt
Collecting requests==2.32.3 (from -r requirements.txt (line 1))
Collecting pandas~=2.2 (from -r requirements.txt (line 2))
Collecting numpy<2.0,>=1.26 (from -r requirements.txt (line 3))
Collecting tqdm (from -r requirements.txt (line 4))
Installing collected packages: tqdm, numpy, requests, pandas
Successfully installed numpy-1.26.4 pandas-2.2.2 requests-2.32.3 tqdm-4.66.4
よく使うオプション
--upgrade
: 許容範囲内で新しいバージョンへ更新--no-cache-dir
: キャッシュを使わずにダウンロード--index-url
: 社内PyPIやミラーを使う--extra-index-url
: 公式に加えて追加のインデックスも参照
インストール後の確認(pip list)
インストールされたパッケージはpip list
やpip show
で確認できます。
python -m pip list
Package Version
---------- -------
numpy 1.26.4
pandas 2.2.2
requests 2.32.3
tqdm 4.66.4
Python側からインポートできるかも確認しておくと安心です。
# verify_install.py
# 指定したパッケージをインポートし、バージョンを表示する簡単なチェック
import importlib
packages = ["requests", "pandas", "numpy", "tqdm"]
for name in packages:
try:
mod = importlib.import_module(name) # モジュールを動的に読み込む
ver = getattr(mod, "__version__", "unknown") # __version__ がない場合は unknown
print(f"{name} {ver}")
except Exception as e:
print(f"{name} import failed: {e}")
# 実行
python verify_install.py
requests 2.32.3
pandas 2.2.2
numpy 1.26.4
tqdm 4.66.4
トラブルシュート(よくあるエラー)
Permissionエラーの対処
WindowsやLinuxでDefaulting to user installation
、PermissionError
、macOSでOperation not permitted
などが出たら、仮想環境を使うのが最優先の解決策です。
プロジェクト内の.venv
を有効化して再実行してください。
どうしても全体(ユーザー領域)に入れたい場合は--user
オプションを付けます。
# ユーザー領域にインストール(グローバルではない)
python -m pip install --user -r requirements.txt
管理者権限でのグローバルインストールやsudo pipは推奨されません。
システムPythonを壊す恐れがあるため、基本はvenvを使います。
SSLやプロキシのエラー
社内ネットワークや独自証明書環境では、SSLError: CERTIFICATE_VERIFY_FAILED
やProxyError
が発生しがちです。
代表的な回避策は以下です。
- 企業プロキシ配下では一時的に環境変数を設定します(端末を閉じると解除されます)。
# Windows PowerShell
$env:HTTP_PROXY="http://user:password@proxy.example.com:8080"
$env:HTTPS_PROXY="http://user:password@proxy.example.com:8080"
python -m pip install -r requirements.txt
# macOS/Linux
export HTTP_PROXY="http://user:password@proxy.example.com:8080"
export HTTPS_PROXY="http://user:password@proxy.example.com:8080"
python -m pip install -r requirements.txt
- 社内証明書を使う場合は、証明書パスを指定します。
python -m pip install --cert /path/to/corporate-ca.pem -r requirements.txt
- ミラーや社内PyPIを使う場合は、インデックスURLを指定します。
python -m pip install --index-url https://pypi.org/simple -r requirements.txt
# 追加のインデックスを併用
python -m pip install --extra-index-url https://mirror.example.com/simple -r requirements.txt
一時的に--trusted-host
を使う回避もありますが、セキュリティ低下に注意してください。
依存関係の競合を解消する
ResolutionImpossible
やbecause these package versions have conflicts
というエラーは、指定したバージョン同士が両立しないことを示します。
例えば、pandas 2.2.* は numpy >=1.26,<2.0 を要求
しますが、requirements.txtでnumpy>=2.0
を要求していると衝突します。
対処の考え方は次のとおりです。
- pipを最新化して解決精度を上げる
python -m pip install --upgrade pip
- エラーメッセージを読み、要求範囲を合わせる
例:numpy>=1.26,<2.0
に修正して再実行。 - クリーンな仮想環境でやり直す
既存環境に残った古いライブラリが干渉することがあります。 - pip checkで整合性を検査
python -m pip check
- 上級:
pip-tools
で依存を解決した固定ファイルを生成(チームで安定化させたい場合に有効)。
衝突は「範囲を緩める」のではなく「互換範囲に合わせる」のが基本方針です。
requirements.txtが見つからない場合
ERROR: Could not open requirements file: [Errno 2] No such file or directory
が出たら、ファイルの場所と名前をまず確認します。
カレントディレクトリが正しいかを確認し、必要なら移動します。
# 中身を確認
ls -l
# または
dir
絶対パスや引用符を利用します(空白を含むパス対策)。
python -m pip install -r "C:\Users\you\project\requirements.txt"
拡張子や綴りミス(requirement.txt
など)を見直します。
まとめ
requirements.txtは、Pythonプロジェクトにおけるライブラリ管理の基本であり、同じ環境を素早く確実に再現する鍵です。
仮想環境(venv)を使い、pip freeze
または手書きで必要なパッケージを整理し、pip install -r requirements.txt
で一括インストールすれば、セットアップが安定します。
バージョンは可能な限り固定し、衝突時は互換範囲を合わせるのがコツです。
今回の手順とトラブルシュートを押さえておけば、新しいPCでもチームメンバーの環境でも、同じ動作を再現できます。