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