MacでPythonの環境構築をしていると、
requirements.txtからpip installしたらエラーが出た- 個別に
pip installすると入るのに、まとめて入らない - チームの環境では動くのに、自分のMacでは失敗する
といった状況に遭遇することがあります。
requirements.txt は便利な仕組みですが、
Pythonの実行環境やpipの向き先が少しでもズレていると失敗しやすいのが特徴です。
この記事では、
Macで requirements.txt から pip install が失敗する主な原因を、
初心者向けに分かりやすく整理します。
※ 本記事は Mac環境(python3)を前提 に説明します。
この記事でわかること
requirements.txtの基本的な役割pip install -r requirements.txtが失敗する主な原因- Macで特につまずきやすいポイント
- エラーが出たときの考え方
requirements.txtとは何か
requirements.txt は、
必要なPythonライブラリとそのバージョンを一覧で管理するファイルです。
一般的には、次のように使われます。
pip3 install -r requirements.txt
これにより、
- 複数のライブラリを一括でインストール
- 環境差分を減らす
といったメリットがあります。
一方で、
環境が少しでも違うとエラーが出やすいのも事実です。
原因① pip3とpython3の向き先が一致していない
最も多い原因は、
pip3が操作しているPythonと、実行しているPythonが一致していないケースです。
この状態では、
pip3 installは成功しているように見える- 実行時にはライブラリが見つからない
といったトラブルが発生します。
まずは次を確認します。
pip3 --version
python3 --version
表示されるPythonのバージョンやパスが
一致しているか を確認してください。
原因② 仮想環境(venv)が有効化されていない
仮想環境を使っている場合、
- venvを作成した
- しかし有効化せずに
pip install -rを実行した
というケースが非常に多く見られます。
この場合、
- ライブラリはグローバル環境に入る
- 実行時は仮想環境が使われる
というズレが起こります。
pip install -r requirements.txt を実行する前に、
プロンプトに (venv) が表示されているか を必ず確認してください。
原因③ Pythonやライブラリのバージョンが合わない
requirements.txt には、
ライブラリのバージョンが固定されていることがあります。
例:
numpy==1.21.0
この場合、
- Pythonのバージョンが新しすぎる
- macOS環境ではビルドできない
といった理由で、インストールが失敗することがあります。
エラーメッセージに
バージョン不一致やビルドエラーが含まれている場合は、
このケースを疑ってください。
原因④ 権限エラー(Permission denied)
Macでは、
システム領域への書き込み権限が原因でエラーになることがあります。
代表的なエラー例:
- Permission denied
- Could not install packages due to an EnvironmentError
この場合、
- 無理に
sudo pip installを使わない - 仮想環境(venv)を使う
のが安全な対処法です。
原因⑤ requirements.txtの記述ミス
意外と見落としがちなのが、requirements.txt 自体の記述ミスです。
よくある例:
- ライブラリ名のスペルミス
- 不要な空白や記号
- コメント行の書き方ミス
一度、
- 問題のライブラリだけを個別に
pip install - どこで失敗しているか切り分ける
と原因が特定しやすくなります。
エラーが出たときの基本的な考え方
requirements.txt からのインストールが失敗した場合、
- Python環境
- pipの向き先
- 仮想環境の状態
のいずれかがズレていることがほとんどです。
まずは、
- 実行しているPythonはどれか
- pip3はどのPythonを指しているか
- 仮想環境は有効か
を順番に確認してください。
まとめ
Macで requirements.txt から pip install が失敗する場合、
主な原因は次の通りです。
- pip3とpython3の向き先が一致していない
- 仮想環境が有効化されていない
- Pythonやライブラリのバージョン不一致
- 権限エラーが発生している
- requirements.txtの記述ミス
これらを一つずつ確認することで、
多くのトラブルは解消できます。
コメントを残す