搞清楚引发`ImportError`时出了什么问题

oro*_*aki 3 python exception python-import

以Django为例,在manage.py:

try:
    import settings
except ImportError:
    sys.stderr.write("Error: Can't find the file 'settings.py'...")
Run Code Online (Sandbox Code Playgroud)

看似合法,但settings进口时会发生什么non_existant_lib_foo

好吧,你被追捕了所有你可以做的事情PATH,等等.

当然,您可以使用except ImportError as e:并打印出实际的错误消息,但如果您只想捕获特定错误并提供一些非常好的建议,如上所述,该怎么办?

您或多或少地使用正则表达式,或者最好猜测"正确"模块导入失败,然后显示消息.

有没有更好的方法来处理这个?

Joc*_*zel 5

基本上问题是您的错误消息是错误的 - 还有其他原因导致导入失败,而不仅仅是错误的路径.ImportError只是意味着"你不能使用这个模块,看看追溯找出原因",你只是跳到了结论.

如果要显示"找不到文件",则应首先查找该文件.imp.find_module那样做.