如果它存在,就导入它。

optional_import的Python项目详细描述


用法

此库仅包含上下文管理器optional_import

>>>fromoptional_importimportoptional_import

成功的导入照常工作:

>>>withoptional_import():...importcollections>>>type(collections)<type'module'>

如果导入不存在,^ {TT1}$将抑制 ImportError否则将被筹集。

>>>importunicornsTraceback(mostrecentcalllast):...ImportError:Nomodulenamedunicorns>>>withoptional_import():...importunicorns>>>unicornsTraceback(mostrecentcalllast):...NameError:name'unicorns'isnotdefined

示例:django本地设置

django中的一个常见模式是将默认设置放在settings.py, 将特定于站点的可选设置放入settings_local.py,然后导入 如果本地设置文件存在,则{TT6}$。

withoptional_import():from.settings_localimport*

为什么不抓住ImportError

只需捕获ImportError

try:importfooexceptImportError:pass

但是这个方法引入了一个问题:如果^ {TT9} $存在,但引发 ImportError,我们希望引发该错误,但实际上是 被except子句吞噬。

使用optional_import,将根据需要引发错误。在下面 例如,该模块试图导入一个不存在的包。

>>>withoptional_import():...importbadTraceback(mostrecentcalllast):...ImportError:Nomodulenamedunicorns

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java ArrayList在项目中随处可见   java JDBC领域身份验证类NotFoundException:com。mysql。jdbc。驾驶员   基于java堆栈的计算器不使用括号   java如何计算文本文件的行数   java何时选择接口或子类   java在表单中修改JSP页面中的对象时,不会返回该对象。(数据写入ID为0的新对象)   java如何在同一个项目中创建多个具有不同main的jar,IntelliJ   java windows xp 32位netbeans问题   对象Java“按下按钮”,每次按下时具有不同的操作   找不到java Gradle[METAINF/persistence.xml]   java在jdbc元数据中获取columnCount=1   java Android:下载/创建和共享文件问题导致太多崩溃,主要是在Android 10(Android Q)上   java映射嵌套列表