繁体   English   中英

Python:从(当前不建议使用的)位置导入模块时发出警告

[英]Python: Issue a warning when a module is imported from a (currently deprecated) location

我们有一个应用程序,使其用户可以使用插件对其进行扩展。 我们提供了一些帮助程序模块,因此用户可以从其插件中使用

import helpermodule

现在,我们决定最好更改辅助程序模块的包装,以使它们都可以从主包中加载,如下所示:

from ourpackage import helpermodule

由于我们不想破坏用户插件中的现有代码,因此我们仍然提供了旧方法。 (实际上,我们只是将帮助程序模块导入了源代码中ourpackage目录内的__init__.py文件中。)当用户脚本导入帮助程序模块时,我们非常想发出警告(使用warnings标准库)。以旧的方式。

所以我的问题是:有没有办法判断用户是否以“错误”的方式导入了助手模块? 理想情况下,我们希望在不检查用户代码的情况下实现这一目标。

这取决于您如何实现“仍然提供旧方法”。 听起来您是将旧模块直接留在搜索路径上,而只是在import helpermodule进行了import helpermodule helpermodule。 (也就是说,您自己仍然以“错误”方式导入模块。)在这种情况下,这是一种可能。

\dir_on_path
helper.py
    \ourpackage
        __init__.py

#### helper.py
import sys
if 'testpack' in sys.modules:
    print "Imported the good way"
else:
    print "Imported the bad way"
####

#### __init__.py
import teststuff
####

但是,请注意,这样做的方式会留下一些尴尬的问题。 您将无法import testpack.teststuff 同样,该人员仍然有可能以好的和坏的方式导入teststuff,从而在sys.modules中创建两个单独的副本。

如果这不是您“仍然提供旧方法”的方式,请进行编辑以阐明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM