这可能有一个明显的答案,但是我是一个初学者。我有一个“模块”(实际上只是一个我经常使用的带有一堆功能的文件),在开始时我导入了许多其他模块。但是,由于我在许多系统上工作,因此并非所有模块都可以在任何特定计算机上加载。为了使事情变得更加困难,在导入软件包时,我还会更改软件包的名称-例如,matplotlib缩写为mp。

我只想加载当前正在使用的系统上存在的那些模块,并对不使用的模块进行一些错误处理。我能想到的唯一方法是将每个import语句括在其自己的try块中,这似乎是非Python的。如果将它们全部包含在同一个try块中,则无论哪个模块引发错误,都将阻止后续模块的加载。有什么想法会让事情看起来更漂亮吗?如果我不想更改他们的名字,那就太容易了...

最佳答案

我认为try except块不是非Python的;相反,它是在Python上处理导入的一种常用方法。

引用Dive into Python:


try:
    import termios, TERMIOS
except ImportError:
    try:
        import msvcrt
    except ImportError:
        try:
            from EasyDialogs import AskPassword
        except ImportError:
            getpass = default_getpass
        else:
            getpass = AskPassword
    else:
        getpass = win_getpass
else:
    getpass = unix_getpass

08-05 01:58
查看更多