模块对象不可调用

时间:2017-01-08 21:34:42

标签: python module

这是我的文件夹结构:

script.py
api/
   __init__.py
   charts/
         __init__.py
         charts.py

script.py中,我有:

from api.charts import charts
import billboard

和电话:

charts('Alternative-Songs', '1997')

billboard.py不在上述结构中,因为它是通过python setup.py install安装在我的系统上的,并且它有charts()的方法,如下所示:

billboard.ChartData(chart_name, date)

charts.pycharts()使用billboard.py方法定义:

def charts(chart_name, date):
    chart = billboard.ChartData(chart_name, date, quantize=True)
    return chart

但是当我运行script.py时,我收到以下错误:

Traceback (most recent call last):
  File "script.py", line 70, in <module>
    print (charts('Alternative-Songs', '1997'))
TypeError: 'module' object is not callable

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

根据您的文件夹结构,charts目录包含charts.py文件。

因此from api.charts import charts将名称charts导入为模块

似乎charts模块有一个名为charts的函数。你认为你正在调用该函数,但是你正在调用该模块。

只是做

print (charts.charts('Alternative-Songs', '1997'))

(如果你问我,那会产生很多charts)。)

答案 1 :(得分:1)

from api.charts import charts

charts.py下的chart目录导入模块api。 (有关模块别名和导入的问题,请参阅this

现在chart是模块引用,而不是方法charts

要调用图表,您必须使用

print(charts.charts('Alternative-Songs', '1997'))

(模块charts内的方法charts)。