Python无法导入套接字

时间:2016-03-27 16:37:59

标签: python sockets

我正在尝试制作一个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

我不确定导致此错误的原因,因为我正在导入套接字。

1 个答案:

答案 0 :(得分:1)

socket.py与另一个模块socket具有相同的名称,因此当您执行socket时,Python对于from socket import openSocket的含义感到困惑。它决定导入模块而不是文件。然后Python会抛出此错误,因为socket模块没有openSocket函数。

要解决此问题,请将socket.py文件的名称更改为其他名称,例如mysocket.py,然后相应地更改run.py中的代码:

from mysocket import openSocket
...