如何从单独的目录导入模块?

时间:2016-06-18 05:49:58

标签: python-3.x asyncore

我想从不同的目录导入asyncore,因为我需要对asyncore的工作方式进行一些更改,并且不想修改基本文件。

我可以将它包含在我的脚本文件夹中,但在放入我需要的所有模块后,它最终会变得混乱。

我很清楚创建一个子目录并在其中放入一个空白的__init__.py文件。这不起作用。我不确定会发生什么,但是当我从子目录导入asyncore时,asyncore就会停止工作。特别;即使我正在调用它,connect方法根本不会运行。将asyncore移动到主目录并导入它通常会消除此问题。

我大大减少了我的代码,但这仍然存在同样的问题:

from Modules import asyncore
from Modules import asynchat
from Modules import socket

class runBot(asynchat.async_chat, object):

    def __init__(self):

        asynchat.async_chat.__init__(self)
        self.connect_to_twitch()

    def connect_to_twitch(self):

        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
        self.connect(('irc.chat.twitch.tv',6667))
        self.set_terminator('\n')
        self.buffer=[]


    def collect_incoming_data(self, data):  
        self.buffer.append(data)    

    def found_terminator(self):
        msg = ''.join(self.buffer)
        print(msg)


if __name__ == '__main__':  


    # Assign bots to channels
    bot = runBot()

    # Start bots
    asyncore.loop(0.001)

我确信这是一个非常简单的东西,我忽略了,但我只是无法解决这个问题。

1 个答案:

答案 0 :(得分:0)

使用sys.path.append - 有关详细信息,请参阅https://docs.python.org/3/tutorial/modules.html

更新:尝试将调试打印放到模块源的开头和结尾,以查看它们是否按预期导入。您还可以打印要用于查看的模块/对象的__file__属性,无论您是否导入了预期的内容 - 例如:

import re
#...
print(re.__file__)