是否有可能验证导入是否来自标准库?
例如:
from math import sin #from the standard library.
from my_module import MyClass #not from the standard library.
Run Code Online (Sandbox Code Playgroud)
没有简单的方法可以做到这一点,因为Python标准库没有以特殊的方式实现 - 对于Python,标准库和其他模块之间没有区别.
充其量,您可以使用该inspect模块尝试找到一些指标,例如,使用inspect.getsourcefile()查找源文件所在的位置,然后使用它来检查它是否是核心库.但是,这不会特别好用,因为C中的任何模块都会返回一个TypeError,因为它们是内置的 - 但你不能认为它们来自标准库,因为任何C扩展模块都会做同样的事情.
如果你真的必须这样做,我的建议是保留标准库模块名称的列表并按照这种方式执行 - 它不是一个很好的解决方案,但它可能比任何替代方案更稳定.