在写Python项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError:Nomodulenamed'xxx'或者ModuleNotFoundError:Nomodulenamed'xxx'。
导入失败问题,通常分为两种:一种是导入自己写的模块(即以.py为后缀的文件),另一种是导入三方库。本文主要讨论第二种情况,今后有机会,我们再详细讨论其它的相关话题。
解决导入Python库失败的问题,其实关键是在运行环境中装上缺失的库(注意是否是虚拟环境),或者使用恰当的替代方案。这个问题又分为三种情况:
一、单个模块中缺失的库
在编写代码的时候,如果我们需要使用某个三方库(如requests),但不确定实际运行的环境是否装了它,那么可以这样:try:importrequestsexcepTImportError:importosos.system('pipinstallrequests')importrequests
这样写的效果是,如果找不到requests库,就先安装,再导入。
在某些开源项目中,我们可能还会看到如下的写法(以json为例):try:importsimplejsonasjsonexcepTImportError:importjson
这样写的效果是,优先导入三方库simplejson,如果找不到,那就使用内置的标准库json。
这种写法的好处是不需要导入额外的库,但它有个缺点,即需要保证那两个库在使用上是兼容的,如果在标准库中找不到替代的库,那就不可行了。
如果真找不到兼容的标准库,也可以自己