Python 可能是重复类型错误:';模块';对象不可调用

Python 可能是重复类型错误:';模块';对象不可调用,python,module,typeerror,Python,Module,Typeerror,我已经使用Python大约一年了,现在我开始编写自己的模块。我试图制作一个模块,同时导入一堆有用的模块。模块可以很好地导入。当我尝试运行它时,它给出了错误 Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> importuseful() TypeError: 'module' object not callable 我在空闲的shell上运行: 从模

我已经使用Python大约一年了,现在我开始编写自己的模块。我试图制作一个模块,同时导入一堆有用的模块。模块可以很好地导入。当我尝试运行它时,它给出了错误

Traceback (most recent call last):
    File "<pyshell#1>", line 1, in <module>
        importuseful()
TypeError: 'module' object not callable
我在空闲的shell上运行:

从模块导入导入导入

重要的

这里是它抛出TypeError的地方

它所在的路径是/home/pi/Modules,它被设置为$PYTHONPATH的一部分

我制作的另一个模块是GPIO,这是我正在尝试导入的模块。我和那个有同样的问题,但那个问题自己解决了。
有人知道什么是错误或如何修复吗?

您需要使用模块名称访问函数,您已导入模块,因此
importusive()
正在尝试调用模块,而不是模块中定义的函数:

 importuseful.importuseful()
或者,如果您想从模块导入函数,您可以使用:

 from importuseful import importuseful
 importuseful()
或使用您的模块:

 from Modules.importuseful import importuseful 
如果您试图使用脚本实际导入所有模块。忘记函数,只做导入

import sys
import os
import RPi.GPIO as GPIO
import GPIO as gpio
import random
import math
import time
import email
import tty
import turtle

然后,如果你想使用所有模块,只需使用
importusive.math
等。。。您可以使用from
from Modules.importuseave import*
但这绝不是一个好主意,您可以这样做的是缩短来自Modules.importuseave importuseave的名称
(..
etc..

您需要使用模块名称访问函数,您已经导入了模块,因此
importusive()
尝试调用模块而不是模块中定义的函数:

 importuseful.importuseful()
或者,如果您想从模块导入函数,您可以使用:

 from importuseful import importuseful
 importuseful()
或使用您的模块:

 from Modules.importuseful import importuseful 
如果您试图使用脚本实际导入所有模块,请忘记函数,只需执行导入即可

import sys
import os
import RPi.GPIO as GPIO
import GPIO as gpio
import random
import math
import time
import email
import tty
import turtle
然后,如果你想使用所有模块,只需使用
importusiver.math
等。你可以使用from
from modules.importusiver import*
但这绝不是一个好主意,你能做的就是缩短名称
from modules.importusiver importusiver as im
im.math(..etc..

As,您需要调用模块内部的函数

from Modules import importuseful

importuseful.importuseful()
但是,这并不能满足您的要求,因为模块将只在函数范围内导入。例如:

>>> def importuseful():
...     import math
... 
>>> importuseful()
>>> math
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'math' is not defined
>>> 
同样,您需要在模块内部调用函数

from Modules import importuseful

importuseful.importuseful()
但是,这并不能满足您的要求,因为模块将只在函数范围内导入。例如:

>>> def importuseful():
...     import math
... 
>>> importuseful()
>>> math
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'math' is not defined
>>> 


@Ryan,是的,您必须使用模块名称来访问其中定义的任何内容,除非您像在第二个示例中那样从模块中实际导入函数,否则您也可以从模块中导入
。ImportUser ImportUser ImportUser
它似乎没有导入所需的模块。它运行模块时没有错误,但没有导入它们。如果没有出错然后它确实导入了,您是在尝试实际访问函数内部还是使用函数?@Ryan,是的,您必须使用模块名称来访问其中定义的任何内容,除非您实际从模块导入函数,如第二个示例中所示,您也可以从模块导入函数。导入导入导入导入导入导入导入导入导入导入它似乎没有导入想要的模块。它运行模块时没有错误,但没有导入它们。如果没有错误,那么它确实导入了,您是否正在尝试访问函数内部的内容或使用函数?可能的重复项您是否也可以提供您编写模块的代码。您应该在询问问题之前进行搜索选项;副本显示在“相关”列表中:)@Cyphase,我在发布之前读过这篇文章,我尝试了它所说的内容,但它不起作用。我现在意识到它不起作用的原因。可能的副本。您能否同时提供您编写模块的代码。您应该在提问前搜索;副本显示在“相关”列表中:)@Cyphase,我在发布之前读过这篇文章,我尝试了它所说的内容,但它不起作用。我现在明白了为什么它不起作用。好的。我现在明白了它的工作原理。谢谢你的解释。@Ryan,我添加了一种方法来做你想做的事情,尽管我仍然不推荐它。谢谢,我可能会修改它导入的函数,使之成为我知道在程序中需要的函数,所以有没有不必要的。@Ryan,为什么不直接将导入文件放在使用它们的文件中?为什么要将它们分离到另一个文件中?在我的Raspberry Pi上使用GPIO引脚时,我总是使用RPi.GPIO、GPIO、time和math。我认为从外部文件导入所有内容要比每次手动导入都要快。好的。我现在看看它是如何工作的。谢谢你的解释。@Ryan,我添加了一种方法来做你想做的事情,尽管我仍然不推荐它。谢谢,我可以将它导入的函数修改为我知道我在程序中需要的函数,这样就没有不必要的函数了。@Ryan,为什么不直接将导入文件放在使用它们的文件中呢?为什么要将它们分开到这个文件中呢s其他文件?在使用Raspberry Pi上的GPIO引脚时,我总是使用RPi.GPIO、GPIO、时间和数学。我认为从外部文件导入所有内容比每次手动导入都要快。