File "C:\Users\Administrator\Documents\Mibot\oops\blinkserv.py", line 82, in __init__
self.serv = socket(AF_INET,SOCK_STREAM)
TypeError: 'module' object is not callable
为什么我得到这个错误? 我困惑。
如何解决这个错误?
File "C:\Users\Administrator\Documents\Mibot\oops\blinkserv.py", line 82, in __init__
self.serv = socket(AF_INET,SOCK_STREAM)
TypeError: 'module' object is not callable
为什么我得到这个错误? 我困惑。
如何解决这个错误?
当前回答
您使用了模块的名称而不是类的名称 使用
import socket
然后
socket.socket(...)
这是一个奇怪的模块,但你也可以使用类似的东西
import socket as sock
然后使用
sock.socket(...)
其他回答
这是另一个陷阱,即使在阅读这些帖子之后,我也花了一段时间才看到。我正在设置一个脚本来调用我的python bin脚本。我也得到了不可调用的模块。
我的zig是我正在做以下事情:
from mypackage.bin import myscript
...
myscript(...)
当我的zag需要做以下事情:
from mypackage.bin.myscript import myscript
...
myscript(...)
总之,仔细检查您的包和模块嵌套。
我想做的是有一个脚本目录,没有*.py扩展名,仍然有'bin'模块在mypackage/bin和这些有我的*.py扩展名。我是包装的新手,并试图遵循标准,因为我解释他们。所以,我在安装根目录下有:
setup.py
scripts/
script1
mypackage/
bin/
script1.py
subpackage1/
subpackage_etc/
如果不符合标准,请让我知道。
这里有一个可能的额外边缘情况,我偶然发现并困惑了一段时间,希望它能帮助到一些人:
在some_module / a.py:
def a():
pass
在some_module / b.py:
from . import a
def b():
a()
在some_module / __init__ . py:
from .b import b
from .a import a
main.py:
from some_module import b
b()
然后,因为当main.py加载b时,它会通过__init__.py,它会在a.py之前尝试加载b.py。这意味着当b.py尝试加载一个对象时,它得到的是模块而不是函数——这意味着你将得到错误消息:模块对象不可调用
这里的解决方案是交换some_module/__init__.py中的顺序:
from .a import a
from .b import b
或者,如果这将创建一个循环依赖,请更改您的文件名,使其与函数不匹配,并直接从文件加载,而不是依赖__init__.py
我得到了同样的错误如下:
'module'对象不可调用
当调用time()进行打印时,如下所示:
import time
print(time()) # Here
因此,我调用time.time(),如下所示:
import time
print(time.time()) # Here
或者,我从时间导入时间,如下图所示:
from time import time # Here
print(time())
然后,错误得到了解决:
1671301094.5742612
我知道这个线程已经有一年了,但真正的问题在您的工作目录中。
我相信工作目录是C:\Users\Administrator\Documents\Mibot\oops\。请在这个目录下检查名为socket.py的文件。一旦你找到它,重命名或移动它。导入socket时,使用当前目录中的socket.py,而不是Python目录中的socket.py。希望这对你有所帮助。:)
注意:永远不要使用Python目录中的文件名来保存程序的文件名;它将与您的程序发生冲突。
检查导入语句,因为模块是不可调用的。 在Python中,所有东西(包括函数、方法、模块、类等)都是对象。