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期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?