ModuleNotFoundError: No module named '〇〇'
pip install の名前 | import の名前 |
---|---|
beautifulsoup4 | bs4 |
pillow | PIL |
opencv-python | cv2 |
pycryptodome | Crypto |
python-dateutil | dateutil |
PyYAML | yaml |
pywin32 | win32api |
pip install beautifulsoup4
してから import bs4
が正解yaml.py
や requests.py
といったファイルを置いてしまうと、Python はそちらを優先して読み込もうとします。PyYAML
や requests
が読み込めずエラーになる――というパターン。ModuleNotFoundError
も出るが、ImportError
や妙な属性エラーになるmy_yaml.py
→ yaml_helper.py
等)__pycache__/
を削除してから再実行import Numpy # NG
import numpy # OK
as
インポートimport の書き方 | 備考 |
---|---|
import numpy as np | 数値計算。np は世界標準。 |
import pandas as pd | データ解析。pd は慣習。 |
import matplotlib.pyplot as plt | グラフ描画。長いので短縮。 |
import tensorflow as tf | 機械学習ライブラリの慣習。 |
import seaborn as sns | 可視化ライブラリの慣習。 |
import
してみると混乱が減ります。try:
import numpy
except ModuleNotFoundError as e:
import subprocess
import sys
module_name = str(e).split()[-1].strip("'") # エラーメッセージからモジュール名取得
subprocess.check_call([sys.executable, "-m", "pip", "install", module_name])
import numpy
python -m pip install ...
で確実に実行中の Python に入れるpip freeze > requirements.txt
を用意して共有するyaml.py
など)