繁体   English   中英

为什么我收到TypeError:“模块”对象在python中不可调用?

[英]Why am I getting TypeError: 'module' object is not callable in python?

我正在创建一个字符串,然后在查询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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM