ModuleNotFoundError: No module named 'blinker._saferef'
Pythonの環境構築において selenium-wire を利用した際に ModuleNotFoundError: No module named 'blinker._saferef' というエラーが発生する場合、依存パッケージである blinker のバージョン(1.8系以降)で _saferef.py が削除されたことが原因である。これを解決するには、blinker を 1.7.0 にダウングレードする必要がある。
発生したエラー
Section titled “発生したエラー”自作の楽天ポイ活ツールを開発するため、Pythonのバージョンを上げて新たな環境を構築した。selenium-wire をインストール後、ツールを実行したところ以下のようなエラーが出力されて起動に失敗した。
ModuleNotFoundError: No module named 'blinker._saferef'エラーの原因
Section titled “エラーの原因”このエラーは selenium-wire と直接的な依存関係にある blinker というモジュールに起因している。blinkerのリリースノートを確認すると、最近のバージョンアップ(1.8.x系)によって内部構造が整理され、_saferef.py というファイルが削除されていた。
selenium-wire 側が古い blinker の内部モジュール(_saferef)を呼び出そうとしているため、見つからずにエラーが発生している状態である。
この問題を根本的に解決するためには、blinker を _saferef.py が存在していた最後の安定バージョンである 1.7.0 にダウングレードする。
pip install blinker==1.7.0selenium-wire実行時のblinker._saferefエラーは、blinker1.8系での破壊的変更(モジュール削除)が原因である。- 回避策として、
pip install blinker==1.7.0を実行し、パッケージを明示的にダウングレードすることで正常に動作するようになる。
他の記事を探す