2016-06-18 6 views
1

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) 

을 아웃.

+0

(HTTP를 [파이썬에서 다른 폴더에서 파일을 가져 오기]의 가능한 중복 : //stackoverflow.com/questions/4383571/importing-files-from-different-folder-in-python) 두 번째 대답을 확인하십시오. –

+0

아. 나는 특히 __init__.py 파일을 사용하는 것이 효과가 없을 것이라고 말했다. 첫 번째 대답은 잘 작동하지는 않지만 작동하지 않아야합니다. 나는 하나의 대안이 존재한다면, 또는 asyncore가 __init__.py를 가진 서브 폴더를 통해 임포트 될 때 asyncore가 제대로 작동하지 않는 이유에 대한 설명을 주시면 감사하겠습니다. – Yamajac

답변

0

자세한 내용은 sys.path.append - https://docs.python.org/3/tutorial/modules.html을 참조하십시오.

업데이트 : 모듈 소스의 처음과 끝 부분에 디버그 인쇄를하여 예상대로 가져 왔는지 확인하십시오. 당신은 또한 당신이 기대했던 수입 여부, 당신이보고 사용할 모듈/개체에 대한 __file__ 속성을 인쇄 할 수 있습니다 - 같은 :

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

사실 sys.path.insert (0, path)를 사용합니다. append를 사용하면 체크 한 마지막 장소가 될 것이고, 처음 체크 할 필요가 있습니다. 그렇지 않으면 수정 된 asyncore가 발견되지 않습니다. 또한, 이것은 약간 해키입니다. 이것은 내가 사용해온 것이지만 더 좋은 대안이 있다면 정말 좋아할 것입니다. – Yamajac

+0

동의합니다. 그것은 상황에 달려 있습니다. 위의 업데이트를 참조하십시오. – pepr