AI自動化

pip install エラー解決:自動化スクリプトで詰まった私の記録

pip install エラー解決:自動化スクリプトで詰まった私の記録

pip install エラー解決:自動化スクリプトで詰まった私の記録

この記事は約 11 分で読めます

📖 目次
  1. 📌 よくある pip エラーパターンと解決の型
  2. 📌 「47行の赤文字」の読み方
  3. 📌 実際に詰まったケース:Playwright + 仮想環境の地獄
  4. 📌 仮想環境を使うようになったきっかけ
  5. 📌 依存関係競合の実録と pip-tools 導入
  6. 📌 コピペで使えるデバッグコマンド集
  7. 📌 よくある質問
  8. 📌 まとめ

Python で自動化スクリプトを書き始めた頃、エラー画面を開くたびに気が重くなっていた。47行の赤文字が並んでいても、どこを読めばいいのかすらわからない。「このエラー、前も見た気がする……」と毎回検索して、Stack Overflow を読んで、なんとなく試して、なんとなく直る。

そういう時期が確実にあった。

今は違う。エラーを見ると「ああ、このパターンか」と思うようになった。そこまで来るのに要したのは、失敗の積み重ねと、ある程度の型の習得だけだった。

この記事でわかること:

  • よくある pip install エラーのパターンと解決の型
  • 仮想環境の使い方と「なぜ venv が必要か」の実感ベースの説明
  • 赤文字47行から「本当のエラー」を5秒で見つける読み方
  • 自動化スクリプトで実際に詰まったケースの実録
  • コピペで使えるデバッグコマンド集

よくある pip エラーパターンと解決の型

まず全体像を頭に入れておく。私が自動化を組んでいる中で遭遇したエラーを種類別に整理した。

エラー種別 典型的なメッセージ 解決方向
モジュール未インストール ModuleNotFoundError: No module named 'xxx' pip install xxx
依存関係の競合 ERROR: pip's dependency resolver does not currently take into account all the packages pip install --upgrade o​r 仮想環境を切り直す
権限エラー Permission denied --user フラグ o​r sudo(後者は非推奨)
Python バージョン不一致 python setup.py egg_info did not run successfully python3 -m pip で実行
キャッシュ壊れ 同じエラーが何度も出る pip cache purge
SSL証明書 SSLError: certificate verify failed --trusted-host o​r pip install certifi

これだけ知っておけば、遭遇するエラーの8割はカバーできる。残りの2割は「そのライブラリ固有の問題」なのでライブラリ名 + GitHub issues で調べるのが早い。


「47行の赤文字」の読み方

最初にやらかしたのは、エラー文を全部読もうとしていたことだった。

Pythonのスタックトレースは基本的に「下から読む」。一番最後の行に実際のエラーメッセージが書いてある。

Traceback (most recent call last):
  File "/Users/taito/scripts/note_poster.py", line 34, in <module>
    from playwright.sync_api import sync_playwright
  File "/usr/local/lib/python3.11/...", line 12, in ...
    ...(中略・たくさんの行)...
ModuleNotFoundError: No module named 'playwright'

この場合、最終行 ModuleNotFoundError: No module named 'playwright' だけ読めばいい。解決策は pip install playwright。上の40行は「そこに至るまでの経路」で、今は気にしなくていい。

ただし、依存関係の競合だけは話が違う。ERROR: ResolutionImpossible みたいなメッセージが中間に出ていたりする。そういうときは全体をコピーして、Claude Code に投げるのが今の私のやり方だ。


実際に詰まったケース:Playwright + 仮想環境の地獄

note の自動投稿スクリプトを書いていたとき、こういうことが起きた。

$ python3 note_poster.py
ModuleNotFoundError: No module named 'playwright'

pip install playwright を実行。成功した。もう一度実行。

$ python3 note_poster.py
ModuleNotFoundError: No module named 'playwright'

また同じエラー。「あれ、さっきインストールしたはずなのに」と15分くらい同じことを繰り返した。

原因は Python インタープリタの混在だった。pip install した先の Python と、スクリプトを実行した Python が違っていた。

# これを確認してなかった
which python3
# /usr/b​in/python3 ← system の Python

which pip3
# /usr/local/b​in/pip3 ← Homebrew の Python に紐付いた pip

解決は python3 -m pip install playwright に変えること。-m pip を使うと「今実行しているこの python にインストールする」という意味になる。

# コピペ可
python3 -m pip install playwright
python3 -m playwright install chromium

これで直った。朝7時に気づいたときの安堵感は今でも覚えている。


仮想環境を使うようになったきっかけ

最初は venv の存在を知っていても、使っていなかった。「面倒くさそう」という理由だけで。

転機はあるスクリプトが動かなくなった日だった。前日まで動いていた自動化パイプラインが、何かをインストールした後から壊れていた。調べると、別プロジェクトで pip install requests --upgrade をしたせいで、古いバージョンに依存していたスクリプトが死んでいた。

それ以来、プロジェクトごとに venv を切るようにした。

# コピペ可:venv 作成から起動まで
cd ~/Documents/AI_Automation_Base
python3 -m venv .venv
source .venv/b​in/activate

# 確認
which python3
# → /Users/taito/Documents/AI_Automation_Base/.venv/b​in/python3

pip install playwright requests

launchd で自動起動するスクリプトには、フルパスで書く。

<!-- launchd plist でのフルパス指定 -->
<key>ProgramArguments</key>
<array>
  <string>/Users/taito/Documents/AI_Automation_Base/.venv/b​in/python3</string>
  <string>/Users/taito/Documents/AI_Automation_Base/01_Scripts/note_poster.py</string>
</array>

これをやっていないと、launchd から実行したとき「モジュールが見つからない」エラーが出続ける。launchd は当然 venv を自動で activate してくれない。


依存関係競合の実録と pip-tools 導入

Playwright と selenium を同じ環境に混在させたとき、こういうメッセージが出た。

ERROR: pip's dependency resolver does not currently take into account all the packages
that are installed. This behaviour is the source of the following dependency conflicts.
selenium 4.1.0 requires urllib3[socks]~=1.26, but you have urllib3 2.0.3 which is incompatible.

試した順:

  1. pip install --upgrade urllib3 → selenium が壊れた
  2. pip install urllib3==1.26.18 → 今度は別のものが壊れた
  3. 仮想環境を作り直して両方を入れ直す → 解決

「依存関係の競合は、仮想環境を切り直す方が早い」。これは今では当たり前のことだけど、最初は30分くらい格闘していた。

競合を事前に防ぐなら pip-tools が使える。requirements.in に必要なライブラリだけ書いておくと、互換性のとれたバージョンを計算してくれる。

# コピペ可:pip-tools でバージョンを固定する
pip install pip-tools

# requirements.in に必要なものを列挙
echo "playwright" >> requirements.in
echo "requests" >> requirements.in

# バージョン解決してロックファイルを生成
pip-compile requirements.in

# ロックファイルからインストール
pip-sync requirements.txt

毎回やるかというとやらない。でも「このパイプラインは半年動かし続ける」と思ったときは使う。


コピペで使えるデバッグコマンド集

詰まったときにまず叩くコマンドをまとめておく。

# コピペ可:pip デバッグ基本セット

# 今どの Python を使っているか確認
which python3 && python3 --version

# pip がどこにインストールするか確認
python3 -m pip show pip | grep Location

# インストール済みパッケージ一覧
python3 -m pip list

# 特定パッケージの情報
python3 -m pip show playwright

# キャッシュをクリア(謎のエラーが続くとき)
python3 -m pip cache purge

# 依存関係の競合チェック
python3 -m pip check

# 全パッケージをrequirements.txtに書き出す
python3 -m pip freeze > requirements.txt

# requirements.txt から一括インストール
python3 -m pip install -r requirements.txt

特に pip check は知らなかった期間が長い。既存の環境で競合が起きているかどうかを確認できる。


よくある質問

pip install したのに ModuleNotFoundError が出る

python3 -m pip install を使っているか確認する。単に pip install だと、実行している Python と異なるインタープリタにインストールされている可能性がある。venv を使っているなら source .venv/b​in/activate で activate できているかも確認。

sudo pip install はだめなのか

やらない方がいい。システムの Python 環境を汚すことになる。--user フラグか、venv を使う。

pip install が途中でコネクションエラーになる

社内ネットワークやプロキシ環境で起きやすい。pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org xxx で試す。私は外出先のモバイル回線切り替えで直ったことがある。

仮想環境の activate を忘れる

launchd のスクリプト内ではフルパス指定にする。手動実行が多いなら .zshrc に auto-activate のフックを書く方法もある。私は忘れがちなので、各プロジェクトの Makefilevenv/b​in/python3 で実行するターゲットを書いている。

pip install が非常に遅い

PyPI のミラーを国内サーバーに変えると速くなる場合がある。pip install -i https://pypi.org/simple/ xxx でそのまま使うか、~/.pip/pip.conf でデフォルトを変更する。


まとめ

  • エラーの「赤文字47行」は下から読む。最終行が本当のエラーメッセージ
  • pip install ではなく python3 -m pip install を使う習慣が混乱を防ぐ
  • 依存関係の競合は「仮想環境を切り直す」方が格闘するより早い
  • launchd から実行するスクリプトには Python のフルパスを書く
  • pip check で既存環境の競合を事前に検出できる
  • 頻繁に壊れる環境には pip-tools でロックファイルを作る

エラーは怖くない。同じパターンが何度も出るだけだ。✨


この記事を読んだあなたに:
– launchd でPythonスクリプトを自動実行する設定方法 #
– Playwright 自動化の始め方:Brave CDP 接続で詰まらなくなった #
– Ollama ローカルLLMのセットアップと自動化パイプラインへの組み込み方 #



👨‍💻
一ノ瀬泰斗
AI自動化エンジニア / Python個人開発者

Claude Code × Ollama × launchd で SNS・ブログ・KDPを全自動化。実測データと失敗談を軸に、月5万円収益化のリアルな記録を発信中。