我在一個Python文件中編寫了一個小的內部DSL文件,這個文件已經增長到了我想要將內容分割到多個不同的目錄+文件中的一個點。將python包中的符號導入到調用者的命名空間中
新目錄結構目前看起來像這樣:
dsl/
__init__.py
types/
__init__.py
type1.py
type2.py
和每種類型的文件包含一個類(例如Type1
)。
我的問題是,我想保留的代碼,使用這個DSL的實現儘可能的簡單,這樣的:
import dsl
x = Type1()
...
這意味着所有的重要標誌應在可直接用戶的名字空間。我曾嘗試更新頂級__init__.py
文件導入相關的符號:
from types.type1 import Type1
from types.type2 import Type2
...
print globals()
輸出顯示的符號正確導入,但他們仍然沒有出現在調用者的代碼(這是做的代碼import dsl
)。我認爲問題在於符號實際上是被導入到'dsl'命名空間。我怎樣才能改變這個,以便這些類也可以在調用者的名字空間中直接使用?
其實這些符號是從dsl下一級。例如dsl.types.type1。 – 2010-06-02 18:54:00
@WaiYipTung:Paul C說他已經更新了頂層'__init__。py'包含這些符號,所以做一個'from dsl import *'應該仍然可以工作,即使這些符號最初被定義爲低一級。 – 2010-06-02 19:43:01