2016-06-18 14 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を[Pythonで別のフォルダからファイルをインポート]の可能重複: //stackoverflow.com/questions/4383571/importing-files-from-different-folder-in-python)2番目の答えを確認してください。 –

+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

私は同意します。状況によって異なります。上記のUpdateを参照してください。 – pepr

関連する問題