我正在尝试制作一个IRC抽搐机器人,但是在导入套接字时我遇到了一个问题
每当我运行程序时,我都会收到错误:
TypeError:'module'对象不可调用
这是追溯:
Traceback (most recent call last):
File "C:\VERYLONGPATH\ChatBot\run.py", line 6, in <module>
s = openSocket()
File "C:\VERYLONGPATH\ChatBot\socket.py", line 5, in openSocket
s = socket.socket()
这是实际的python代码:
run.py
from socket import openSocket
from initialize import joinRoom
s = openSocket()
joinRoom(s)
while True:
presist = True
socket.py
import socket
from settings import HOST, PORT, PASS, ID, CHANNEL
def openSocket():
s = socket.socket()
s.connect((HOST, PORT))
s.send("PASS " + PASS + "\r\n")
s.send("NICK " + ID + "\r\n")
s.send("JOIN #" + CHANNEL + "\r\n")
return s
我不确定导致此错误的原因,因为我正在导入套接字。
答案 0 :(得分:1)
socket.py
与另一个模块socket
具有相同的名称,因此当您执行socket
时,Python对于from socket import openSocket
的含义感到困惑。它决定导入模块而不是文件。然后Python会抛出此错误,因为socket
模块没有openSocket
函数。
要解决此问题,请将socket.py
文件的名称更改为其他名称,例如mysocket.py
,然后相应地更改run.py
中的代码:
from mysocket import openSocket
...