わかりました。私のプロジェクトの 1 つでかなり奇妙な動作がありました。誰かが理由を教えてくれることを願っています。私のファイル構造は次のようになります。
MainApp.py
res/
__init__.py
elements/
__init__.py
MainFrame.py
MainFrame.py の内部で、wx.Frame を拡張する RPMWindow という名前のクラスを定義しました。
MainApp.py では、次のように動作します。
from res.elements.MainFrame import *
そして、これはしません:
from res.elements.MainFrame import RPMWindow
ワイルド カード インポートが問題を起こさないことはわかっていますが、ワイルド カードが成功したときに名前付きインポートが失敗する理由を理解したいと思っています。
クラス名を使用すると、次のトレースバックが表示されます。
Traceback (most recent call last):
File "C:\myApps\eclipse\plugins\org.python.pydev.debug_1.5.6.2010033101\pysrc\pydevd.py", line 953, in <module>
debugger.run(setup['file'], None, None)
File "C:\myApps\eclipse\plugins\org.python.pydev.debug_1.5.6.2010033101\pysrc\pydevd.py", line 780, in run
execfile(file, globals, locals) #execute the script
File "C:\Documents and Settings\Daniel\workspace\RPM UI - V2\src\MainApp.py", line 2, in <module>
from res.elements.MainFrame import RPMWindow
File "C:\Documents and Settings\Daniel\workspace\RPM UI - V2\src\res\elements\MainFrame.py", line 2, in <module>
from res.elements.MenuBar import MenuBarBuilder
File "C:\Documents and Settings\Daniel\workspace\RPM UI - V2\src\res\elements\MenuBar.py", line 2, in <module>
from MainApp import _, DataCache
File "C:\Documents and Settings\Daniel\workspace\RPM UI - V2\src\MainApp.py", line 2, in <module>
from res.elements.MainFrame import RPMWindow
ImportError: cannot import name RPMWindow
ワイルド カード インポートを使用すると、トレースバックが表示されず、アプリケーションが開きます。