python中的依赖注入(取决于模块可用性)

2024-06-28 19:08:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为GPS IDE开发插件,我想有两个版本: 1GPS插件-使用GPS运行 2独立应用程序-不带GPS运行

插件的一个特性是行高亮显示。当插件作为独立的应用程序运行是不可能的。我为此创建了gpshelper类,它导入GPS模块。导入在作为独立应用程序运行时引发ImportException(因为GPS模块不可用)。 我想知道我应该如何将这个gpshelper模块注入到我的插件中。你知道吗

高亮显示是在高亮显示方法调用(此方法调用gpshelper)期间执行的。你知道吗

这样可以吗?当我使用内部高亮显示方法时:

try:
    import gpshelper
except ImportError:
    warnings.warn('Program is running as python app (not GPS plugin)')

也许还有其他更好的方法?你知道吗


Tags: 模块方法import版本插件程序运行应用程序特性
1条回答
网友
1楼 · 发布于 2024-06-28 19:08:01

将gps\u高亮显示例程定义为try part导入gpshelper的一部分。然后从现有代码中调用该例程。在EXPEPT部分中,定义一个伪gps\U高亮显示函数。这样,您就可以保持通话代码干净:

import warnings

try:
    import gpshelper
    def gps_highlight(*args, **kw):
        return gpshelper.highlight(*args, **kw)
except ImportError:
    warnings.warn('Program is running as python app (not GPS plugin)')
    def gps_highlight(*args, **kw):
        return None

# after this you can safely call gps_highlight with the right parameters
# as needed by gpshelper.highlight

相关问题 更多 >