Skip to main content
 首页 » 编程设计

python之为什么我会收到 TypeError : 'module' object is not callable in python

2025年05月04日4452php

我正在创建一个字符串,然后在查询 mongodb 集合的方法中使用该字符串。最终日期将来自用户输入。这是相关的代码和字符串:

import pymongo 
from pymongo import MongoClient 
from datetime import datetime 
import time 
import datetime 
start_yr    = 2015 
start_mnth  = 2 
start_day   = 1 
end_yr      = 2015 
end_mnth    = 2 
end_day     = 28 
 
# this is the line called in the error 
created_at_string = { "created_at": {"$gte" : datetime(start_yr, start_mnth, start_day),"$lt" : datetime(end_yr, end_mnth, end_day)}} 

我们的想法是在更复杂的查询方法中使用 created_at_string 作为参数。

我得到:

Traceback (most recent call last): 
  File "main.py", line 218, in <module> 
    program.runProgram() 
  File "main.py", line 61, in runProgram 
    report.RcreateReport() 
  File "/filepath/report.py", line 95, in RcreateReport 
 created_at_string = { "created_at": {"$gte" : datetime(start_yr, start_mnth, start_day),"$lt" : datetime(end_yr, end_mnth, end_day)}} 
TypeError: 'module' object is not callable 

为什么?

请您参考如下方法:

我发现了你的问题:

from datetime import datetime 
import time 
import datetime  

让我们按顺序看一下:

在您的globals 中,您有一个叫做datetime 的函数。然后,您导入 time,一个模块对象。然后,您导入 datetime,从而覆盖您的 datetime 函数。这是一个例子:

>>> from datetime import datetime 
>>> datetime(2015, 05, 26) 
datetime.datetime(2015, 5, 26, 0, 0) 
>>> import datetime 
>>> datetime(2015, 05, 26) 
 
Traceback (most recent call last): 
  File "<pyshell#24>", line 1, in <module> 
    datetime(2015, 05, 26) 
TypeError: 'module' object is not callable 
>>>  

无论如何,即使你改变了顺序,你也会覆盖一些东西,无论是函数还是模块对象。所以,只需重命名一些东西:

import datetime 
import time 
from datetime import datetime as dt