Pythonのpipを用いてライブラリをインストールする際に、
Command “python setup.py egg_info” failed with error code 1 in …
というエラーが出てきたらどうすればいいのか、その対処法を記述しておきます。
|
pip install XXX >Command "python setup.py egg_info" failed with error code 1 in ... |
このエラーが出力される原因には以下のパターンが存在するようです。
※この他にもあれば随時更新していきます
- pip、setuptoolsが最新ではない
- 必要となるライブラリがインスールされていない
それぞれについて見ていきましょう。
pip、setuptoolsが最新ではない
Pythonでライブラリをインストールする際に必須となるpip、setuptoolsが最新ではない場合にこのようなエラーが出るみたいです。
そんなときは以下のコマンドで両者をアップグレードしましょう。
|
pip install --upgrade pip setuptools |
必要となるライブラリがインスールされていない
私が起こった現象を例に紹介しましょう。
pip実行時に以下のようなエラーがTracebackと一緒に出力されました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
Collecting PyAutoGUI==0.9.36 (from Automagica==0.3.1) Using cached https://files.pythonhosted.org/packages/2e/83/89b5adbc37d1bbf7b486a2c1c00e8037e6f801e8c053c4897bb82d9510c6/PyAutoGUI-0.9.36.tar.gz Complete output from command python setup.py egg_info: Traceback (most recent call last): File "/private/var/folders/ml/nlwymzrs1y1c0rz65ztz16lh0000gn/T/pip-install-ummitru6/PyAutoGUI/pyautogui/_pyautogui_osx.py", line 5, in <module> import Quartz ModuleNotFoundError: No module named 'Quartz' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<string>", line 1, in <module> File "/private/var/folders/ml/nlwymzrs1y1c0rz65ztz16lh0000gn/T/pip-install-ummitru6/PyAutoGUI/setup.py", line 6, in <module> version=__import__('pyautogui').__version__, File "/private/var/folders/ml/nlwymzrs1y1c0rz65ztz16lh0000gn/T/pip-install-ummitru6/PyAutoGUI/pyautogui/__init__.py", line 110, in <module> from . import _pyautogui_osx as platformModule File "/private/var/folders/ml/nlwymzrs1y1c0rz65ztz16lh0000gn/T/pip-install-ummitru6/PyAutoGUI/pyautogui/_pyautogui_osx.py", line 7, in <module> assert False, "You must first install pyobjc-core and pyobjc: https://pyautogui.readthedocs.io/en/latest/install.html" AssertionError: You must first install pyobjc-core and pyobjc: https://pyautogui.readthedocs.io/en/latest/install.html ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/ml/nlwymzrs1y1c0rz65ztz16lh0000gn/T/pip-install-ummitru6/PyAutoGUI/ |
エラーに慣れていない最初のうちは一番下のエラーメッセージのみを見て、Googleで検索し始める方も多いかもしれません。ぱっと見た感じだと訳がわからないですしね。
しかし案外、単純でしっかり「どの部分で」「どんなエラーが発生したか」、丁寧なライブラリなら「対処法はどうなのか」という内容まで書いてあるものなのです。
それでは中を見てみましょう。
「Traceback」を見る
このような場合はまず「Traceback」と書かれている部分を見ます。
この例では4、19行目ですね。
そこから一番下の行まではどのソースファイルで、その中のどの行でなど「どの部分で」に該当します。
ここは今回見るべきではありません。重要なのは一番下の行です。
|
ModuleNotFoundError: No module named 'Quartz' |
この部分は「どんなエラーが発生したか」という内容になります。
少し英語が読める方なら、これが「’Quartz’というモジュールがないよ」という意味だとわかるでしょう。
|
AssertionError: You must first install pyobjc-core and pyobjc: https://pyautogui.readthedocs.io/en/latest/install.html |
このライブラリは丁寧にも、「対処法はどうなのか」まで書いてくれています。
それがこの部分で「あなたはまず最初に’pyobic-core’と’pyobic’をインストールしなければいけない」と教えてくれているのです。
ここまで分かれば、後はその2つのライブラリのインストール方法をGoogleで検索し、インストールすればいいのです。
まとめ
私がこれまで遭遇したpip実行時に発生した「Command “python setup.py egg_info” failed with error code 1 in …」エラーについては上記の内容で解決することができましたが、もっと別のパターンも存在するかもしれません。
遭遇した場合、見かけた場合はまた追記していきたいと思います。