2013-04-24 80 views
0

我剛開始使用扭曲工作。我有一些問題需要理解扭曲的插件系統。我想實現的是我的應用程序中的一個文件夾/包,我可以放置插件,以便在啓動反應器時可以識別它們。扭曲插件/放置它們的位置

我的項目結構如下所示:

MyProj 
    |-__init__.py 
    |-myproj 
     |-__init__.py 
     |-imatism.py 
     |-twisted 
      |-__init__.py 
      |-plugins 
       |-simplematerial.py 

繼在doc The Twisted Plugin System的解釋,我不知道如果我把這些插件在正確的包。在教程中描述的插件目錄中沒有init .py。 當我啓動反應堆時沒有錯誤,但是即使我實例化SimpleMaterial的兩個對象,getPlugins(MyProj.myproj.imatism.IMaterial)也會返回一個空列表。

我也試過了「Alternate Plugin Packages」(見上面的鏈接),它以相同的行爲結束 - 沒有錯誤,也沒有插件輸出。

可能是插件被加載,但沒有正確實例化或錯誤的地方?

有人可以幫忙嗎?

回答

0

在你的問題中,你的意思是init.py?或者那些是爲__init__.py文件?

如果是後者,然後嘗試改變周圍的結構是:

MyProj 
    |-myproj 
     |-__init__.py 
     |-imatism.py 
     |-twisted 
      |-plugins 
       |-simplematerial.py 

重要的是,__init__.py使得目錄轉換爲Python(導入式的,而不是分佈式)封裝。將__init__.py設置爲MyProj會使import MyProj成爲寫入應用程序代碼的可行東西,但由於MyProj/myproj中沒有__init__.py,因此您無法使用import MyProj.myproj,因此大部分代碼可能無法訪問。此外,名稱中的冗餘也不是很有幫助。

我還從MyProj/myproj/twisted中刪除,因爲這只是Twisted插件系統的工作方式:您不要將該目錄設置爲Python包,它只是一個常規目錄。

+0

對不起,我的意思是'__init __。py'當然。我編輯了這個問題。問題不在於進口。但是你對'MyProj/myproj/twisted'中的__init__'文件是正確的,就是這樣。謝謝! – user937284 2013-04-24 13:02:02

+0

(冗餘來自教程,但我認爲你是對的。) – user937284 2013-04-24 13:04:49