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
为什么我得到这个错误? 我困惑。
如何解决这个错误?
当前回答
我得到了同样的错误如下:
'module'对象不可调用
当调用time()进行打印时,如下所示:
import time
print(time()) # Here
因此,我调用time.time(),如下所示:
import time
print(time.time()) # Here
或者,我从时间导入时间,如下图所示:
from time import time # Here
print(time())
然后,错误得到了解决:
1671301094.5742612
其他回答
当在setup.py中配置console_scripts入口点时,我发现当端点是模块或包而不是模块中的函数时存在这个问题。
Traceback (most recent call last):
File "/Users/ubuntu/.virtualenvs/virtualenv/bin/mycli", line 11, in <module>
load_entry_point('my-package', 'console_scripts', 'mycli')()
TypeError: 'module' object is not callable
例如
from setuptools import setup
setup (
# ...
entry_points = {
'console_scripts': [mycli=package.module.submodule]
},
# ...
)
应该是
from setuptools import setup
setup (
# ...
entry_points = {
'console_scripts': [mycli=package.module.submodule:main]
},
# ...
)
因此,它将引用一个可调用的函数,而不是模块本身。如果模块有一个if __name__ == '__main__':块,似乎没有什么区别。这将使模块不可调用。
解决这个问题的一个简单方法是导出pythonpath变量环境。例如,对于Debian/GNU Linux中的Python 2.6:
export PYTHONPATH=/usr/lib/python2.6`
在其他操作系统中,您将首先找到该模块或socket.py文件的位置。
假设YourClass.py的内容是:
class YourClass:
# ......
如果你使用:
from YourClassParentDir import YourClass # means YourClass.py
通过这种方式,如果你尝试调用YourClass(),你将得到TypeError: 'module'对象不可调用。
但是,如果你用:
from YourClassParentDir.YourClass import YourClass # means Class YourClass
或者使用YourClass.YourClass(),它可以工作。
简单回答:您将文件/目录作为函数调用,而不是真正的函数
读:
这种错误发生在导入模块时,将其视为函数并调用它。 所以在python模块中是一个。py文件。包(目录)也可以看作是模块。 假设我有一个create。py文件。在这个文件中,我有一个这样的函数:
#inside create.py
def create():
pass
现在,在另一个代码文件中,如果我这样做:
#inside main.py file
import create
create() #here create refers to create.py , so create.create() would work here
当我将create.py文件作为函数调用时,它会给出这个错误。 所以我得这么做
from create import create
create() #now it works.
我得到了同样的错误如下:
'module'对象不可调用
当调用time()进行打印时,如下所示:
import time
print(time()) # Here
因此,我调用time.time(),如下所示:
import time
print(time.time()) # Here
或者,我从时间导入时间,如下图所示:
from time import time # Here
print(time())
然后,错误得到了解决:
1671301094.5742612