为什么我收到 TypeError: 'module' object is not callable in python? [英] Why am I getting TypeError: 'module' object is not callable in python?

查看:82
本文介绍了为什么我收到 TypeError: 'module' object is not callable in python?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

导入pymongo从 pymongo 导入 MongoClient从日期时间导入日期时间导入时间导入日期时间开始年 = 2015start_mnth = 2开始日 = 1end_yr = 2015end_mnth = 2结束日 = 28# 这是错误中调用的行created_at_string = { "created_at": {"$gte" : datetime(start_yr, start_mnth, start_day),"$lt" : datetime(end_yr, end_mnth, end_day)}}

这个想法是在更复杂的查询方法中使用 created_at_string 作为参数.

我得到:

回溯(最近一次调用最后一次): 中的文件main.py",第 218 行程序.runProgram()文件main.py",第 61 行,在 runProgram 中报告.RcreateReport()文件/filepath/report.py",第 95 行,在 RcreateReportcreated_at_string = { "created_at": {"$gte" : datetime(start_yr, start_mnth, start_day),"$lt" : datetime(end_yr, end_mnth, end_day)}}类型错误:模块"对象不可调用

为什么?

解决方案

我发现了您的问题:

from datetime import datetime导入时间导入日期时间

让我们按顺序看:

在你的 globals 中,你有一个叫做 datetime 的东西,一个函数.然后,您导入 time,一个模块对象.然后,您导入 datetime,从而覆盖您的 datetime 函数.举个例子:

<预><代码>>>>从日期时间导入日期时间>>>日期时间(2015, 05, 26)datetime.datetime(2015, 5, 26, 0, 0)>>>导入日期时间>>>日期时间(2015, 05, 26)回溯(最近一次调用最后一次):文件<pyshell#24>",第 1 行,在 <module> 中日期时间(2015, 05, 26)类型错误:模块"对象不可调用>>>

无论如何,即使您更改顺序,您也会覆盖某些内容,无论是函数还是模块对象.所以,只需重命名:

导入日期时间导入时间从日期时间导入日期时间为 dt

I'm creating a string that I an then use in a method that queries a mongodb collection. Eventually the dates will be from user input. Here's the relevant code and string:

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)}}

The idea will be to use created_at_string as an argument in more complex query methods.

I'm getting:

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

Why?

解决方案

I've found your issue:

from datetime import datetime
import time
import datetime 

Let's look at this in order:

In your globals, you have something called datetime, a function. Then, you import time, a module object. Then, you import datetime, hence overwriting your datetime function. Here's an example:

>>> 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
>>> 

No matter what, even if you change the order, you will overwrite something, be it the function or module objects. So, just rename something:

import datetime
import time
from datetime import datetime as dt

这篇关于为什么我收到 TypeError: 'module' object is not callable in python?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆