【问题标题】:python 'module' object is not callable when calling a function调用函数时python'module'对象不可调用
【发布时间】:2018-04-03 01:53:56
【问题描述】:

我知道有几个关于这个错误的帖子,但我似乎找不到合适的解决方案。

from libcomcat.search import search
import datetime
eventlist = search(starttime = datetime(1945,1,1,0,0),
              endtime = datetime.datetime.now(),
               maxlatitude = -5.747, minlatitude = -11.153,
               maxlongitude = 121.619, minlongitude = 104.7,
              producttype = moment-tensor)

它返回的“模块”对象是不可调用的。我试图通过打印它来确保search 是一个可调用函数而不是一个模块

print (search)

按照TypeError: 'module' object is not callable 中的建议并返回:

函数搜索在 0x7f43​​08fe5ea0

我到底错过了什么?为什么search 看起来既是函数又是模块?

我尝试过的其他事情: 1. 按原样导入 libcomcat 并调用它为libcomcat.search.search 仍然得到相同的错误 2. 有人建议在父目录中的 innit.py 上也导入它(我不明白为什么?)仍然无法正常工作

【问题讨论】:

  • 不是search。你还想打什么电话?
  • 异常告诉你问题是哪一行,同时也给你一些关于问题所在的信息。即使你不能理解所有这些,你也应该将它粘贴到你的答案中,以便能够理解它的人可以使用它来帮助调试你的问题。阅读帮助中的 minimal reproducible example 部分,了解有关问题中包含的内容的更多信息。
  • 问题已解决。显然问题出在日期时间上,而我一直在看错误的问题。

标签: python


【解决方案1】:

datetime 模块包含您尝试使用的datetime 类。要解决此问题,请从模块中导入类

from datetime import datetime
starttime = datetime(1945,1,1,0,0)

或者,通过从模块中调用类来创建datetime对象:

import datetime
starttime = datetime.datetime(1945,1,1,0,0)

【讨论】:

    【解决方案2】:

    此处不可调用的模块对象是datetime,在表达式中:

    datetime(1945,1,1,0,0)
    

    你可能想要的是:

    datetime.datetime(1945,1,1,0,0)
    

    或者,将import datetime 更改为from datetime import datetime,并将datetime.datetime.now() 更改为datetime.now()

    【讨论】:

      猜你喜欢
      • 2012-11-04
      • 2020-09-11
      • 2021-12-15
      • 1970-01-01
      • 2013-05-05
      • 1970-01-01
      • 2017-05-11
      • 2021-08-21
      • 2020-10-08
      相关资源
      最近更新 更多