- Python
‘module’ object is not callableの直し方
TypeError: 'module' object is not callable は、モジュール(ファイル)を、関数やクラスのように () を付けて呼び出したときのエラーです。 多くは、モジュールと、その中のクラス・関数が同じ名前のときに起きます。
import datetime
datetime(2026, 10, 11) # TypeError: 'module' object is not callable
import datetime で取り込まれるのは「datetime モジュール」で、日時を作る「datetime クラス」はその中にあります。
| 直し方 | 書き方 |
|---|---|
| モジュール名を付けて呼ぶ | datetime.datetime(2026, 10, 11) |
from でクラスを取り込む |
from datetime import datetime → datetime(2026, 10, 11) |
確認環境:Python 3.10・3.11・3.12・3.13・3.14(確認日 2026年10月11日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「'module' object is not callableの直し方」
Python 3.12 以降は、直し方が表示される
| Python | import time して time() |
|---|---|
| 3.10・3.11 | TypeError: 'module' object is not callable |
| 3.12・3.13・3.14 | TypeError: 'module' object is not callable. Did you mean: 'time.time(...)'? |
3.12 以降は、Did you mean: 'time.time(...)'? と、正しい呼び方が表示されました。 モジュールの中に同じ名前の関数・クラスがあるときに出ます(decimal のように、同じ名前のものが無いときは出ませんでした)。
モジュールと同じ名前のもの(よく間違える一覧)
確認環境で、import モジュール のあとに モジュール() と呼ぶと、すべてこのエラーになりました。
| import したもの | 呼びたかったもの | 正しい書き方 |
|---|---|---|
import datetime |
日時のクラス | datetime.datetime(...) または from datetime import datetime |
import time |
現在の時刻の関数 | time.time() |
import glob |
ファイルを探す関数 | glob.glob('*.py') |
import pprint |
整形して表示する関数 | pprint.pprint(...) |
import random |
0〜1 の乱数の関数 | random.random() |
import copy |
コピーの関数 | copy.copy(...) |
import socket |
ソケットのクラス | socket.socket(...) |
import tqdm(ライブラリ) |
進捗バーのクラス | from tqdm import tqdm |
from PIL import Image |
画像を開く | Image.open('a.png')(Image はモジュール) |
from PIL import Image の Image は、クラスではなくモジュールでした。 画像を開くのは Image.open(...) です。ライブラリのサンプルコードの書き方(import ... か from ... import ... か)に合わせると、このずれが起きません。
見分け方:type で確かめる
import datetime
print(type(datetime)) # <class 'module'>
from datetime import datetime
print(type(datetime)) # <class 'type'>(クラス)
print(callable(datetime)) # True
<class 'module'> と出たら、呼び出せません。 その中の何を呼びたいかを確かめます。
import の順番で、名前が上書きされる
同じ名前を2回 import すると、あとの import で上書きされます。 ファイルの上のほうで from datetime import datetime と書いていても、下のほうに import datetime があると、datetime はモジュールに戻ります。
| import の順番 | 呼び方 | 結果(確認環境) |
|---|---|---|
from datetime import datetime → import datetime |
datetime(2026, 10, 11) |
'module' object is not callable |
import datetime → from datetime import datetime |
datetime.date.today() |
AttributeError: 'method_descriptor' object has no attribute 'today' |
from datetime import datetime だけ |
datetime.datetime.now() |
AttributeError: type object 'datetime.datetime' has no attribute 'datetime' |
逆の間違い(クラスを取り込んだのに、モジュールのつもりで書いた)では、AttributeError になります。 同じ原因でも、順番によってエラーの種類が変わります。
1つのファイルの中では、どちらか一方の書き方にそろえます。
# どちらかにそろえる
import datetime as dt # モジュールに別名を付ける(おすすめ)
dt.datetime.now(); dt.date.today()
from datetime import datetime, date # 使うクラスだけ取り込む
datetime.now(); date.today()
import datetime as dt のように別名を付けると、クラスの datetime と区別でき、上書きも起きません。
自分のファイル名がモジュールと同じとき
自分で作った datetime.py や random.py があると、標準のモジュールの代わりにそちらが読み込まれ、AttributeError や循環インポートのエラーになります。この場合の見分け方と直し方は、関連記事の「cannot import nameの直し方|Pythonの循環インポート」で扱っています。
確認の手順(チェックリスト)
| 順番 | 確認すること | 方法 |
|---|---|---|
| 1 | 呼んだ名前は何か | エラーの行の 名前(...) |
| 2 | それはモジュールか | print(type(名前)) が <class 'module'> |
| 3 | 3.12 以降なら | Did you mean の書き方に直す |
| 4 | import の書き方 | import x か from x import y か |
| 5 | 同じ名前を2回 import していないか | ファイル全体を検索する |
| 6 | 別名を付ける | import datetime as dt |
よくある質問
Q. Jupyter Notebook で、前は動いたのに急に出ます。
A. Notebook は、セルを実行した順番で名前が上書きされます。別のセルで import datetime を実行すると、それ以降は datetime がモジュールになります。カーネルを再起動して、上から順に実行し直すと、どの順番で上書きされたかが分かります。
まとめ
- モジュールを
()で呼んだエラー。モジュールと中身が同じ名前のときに多い datetime.datetime(...)か、from datetime import datetimeに直す- Python 3.12 以降は
Did you mean: 'time.time(...)'?と直し方が出る from PIL import ImageのImageはモジュール(Image.open)- 同じ名前を2回 import すると上書きされる。逆向きは AttributeError
import datetime as dtで別名を付けると混乱しない
参考・出典
確認日はいずれも 2026年10月11日です。
- Python ドキュメント「The import system」:https://docs.python.org/3/reference/import.html
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「'module' object is not callableの直し方」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。