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 # OKas インポート| 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 numpypython -m pip install ... で確実に実行中の Python に入れるpip freeze > requirements.txt を用意して共有するyaml.py など)