Python:从(当前已弃用的)位置导入模块时发出警告

2024-06-28 15:35:20 发布

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

我们有一个应用程序,它允许用户使用插件来扩展它。我们提供了一些帮助器模块,用户可以使用它们的插件访问它们

import helpermodule

现在,我们决定最好更改helper模块的打包,以便所有模块都从主包加载,如下所示:

from ourpackage import helpermodule

因为我们不想破坏用户插件中现有的代码,所以我们仍然提供旧的方法。(事实上,我们刚刚在源代码的ourpackage目录中的__init__.py文件中导入了助手模块。)当用户脚本以旧方式导入助手模块时,我们非常希望发出警告(使用warnings标准库)。你知道吗

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


Tags: 模块方法代码用户fromimporthelper插件
1条回答
网友
1楼 · 发布于 2024-06-28 15:35:20

这取决于你是如何实现“仍然提供旧的方式”。听起来像是将旧模块直接放在搜索路径上,而只是在我们的包中执行import 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,并在中创建两个单独的副本系统模块. 你知道吗

如果这不是你如何“仍然提供旧的方式”,请编辑澄清。你知道吗

相关问题 更多 >