32

検討

try:
   import someProprietaryModule
except ImportError:
   raise ImportError('It appears that <someProprietaryModule> is not installed...')

someProprietaryModule がインストールされていない場合、実行時に次のように表示されます。

(traceback data)
ImportError: unknown module: someProprietaryModule

During handling of the above exception, another exception occurred:

(traceback data)
ImportError: It appears that <someProprietaryModule> is not installed...

おそらく、「上記の例外の処理中...」行(およびその上の行)を表示したくないでしょう。私はこれを行うことができます:

_moduleInstalled = True
try:
   import someProprietaryModule
except ImportError:
   _moduleInstalled = False
if not _moduleInstalled: 
   raise ImportError('It appears that <someProprietaryModule> is not installed...')

しかし、それは少しハックのように感じます。他に何ができますか?

4

3 に答える 3

52

Python 3.3 以降raise ... from Noneでは、この状況で使用できます。

try:
   import someProprietaryModule
except ImportError:
   raise ImportError('It appears that <someProprietaryModule> is not installed...') from None

これにより、望ましい結果が得られます。

于 2013-06-13T16:15:09.813 に答える