我有一系列python模塊寫在同一個目錄下,我遇到了ImportError問題。當我嘗試'重新導入'模塊時,爲什麼會遇到ImportError?
我使用的三個模塊是draw_menu.py
,errors.py
和file_operations.py
。
在errors.py
我需要的錯誤代碼的列表,我使用在file_operations.py
定義的自定義方法以打開包含代碼因此我使用import file_operations
只是她爆炸的下方(在類定義如上)的文件。
在file_operations.py
我使用error.py
中定義的方法在出錯時打印錯誤消息(例如找不到文件等)。因此我在這裏採用相同的方式import errors
。
上述工作正常,但當我使用draw_menu.py
,它使用文件來定義ascii菜單中的選項(因此我使用import file_operations
)時遇到了一個ImportError。
ImportError: cannot import name file_operations
我明白,這是因爲 '進口樹' 如果你喜歡流向如下:
draw_menu
< - file_operations
< - errors
< - file_operations
這是每個重要模塊可以單獨使用,爲什麼這是一個問題,我怎樣才能克服這一點,而不需要從errors.py
刪除import file_operations
?
三江源
湯姆
感謝您的快速回復,我保留了兩個模塊,並將'import file_operations'移入'errors.py'中定義的所需方法內,這解決了我的問題。通常從循環導入中會產生什麼樣的問題? – Thorsley 2010-07-13 09:29:36
@Thorsley:http://stackoverflow.com/questions/3082015/python-module-initialization-order/3082097#3082097 – 2010-07-13 09:31:16
在http://effbot.org/zone/上有一篇關於python導入的舊文章,但非常好。 import-confusion.htm和關於循環進口的章節。值得一讀。 – mavnn 2010-07-13 09:31:30