在python3.4中从imp转换为importlib时出现的问题

2024-10-04 03:24:39 发布

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

我做了一个Python应用程序,可以加载插件。这些插件是基于名称和路径加载的。在

我当前正在使用

pluginModule = imp.load_source(pluginModuleName,  pluginModulePath)

然后以这种方式在模块中获取一个类实例

^{pr2}$

由于imp lib已被弃用,我想使用importlib。获取类实例的唯一类似方法是使用

pluginModule = importlib.machinery.SourceFileLoader(pluginModuleName, pluginModulePath).load_module()

奇怪的是(我使用pyCharm作为IDE)。当我在调试模式下运行我的代码时,上面的命令运行得很好,我得到了我的类实例。但是,运行代码通常会出现以下错误。在

pluginModule = importlib.machinery.SourceFileLoader(pluginModuleName, pluginModulePath).load_module()
AttributeError: 'module' object has no attribute 'machinery'

为什么运行和调试之间有区别。 有没有别的办法可以做我想做的事。在

我也试过了

pluginModuleTmp = importlib.util.spec_from_file_location(pluginModuleName, pluginModulePath)

这也给了我正确的数据,但是我不能以这种方式加载模块,或者至少我不知道如何加载

问候 安德斯


Tags: 模块实例代码插件应用程序方式loadimportlib
1条回答
网友
1楼 · 发布于 2024-10-04 03:24:39

找到了解决办法。显然,在调试模式下,更多的模块是在我背后导入的。我通过添加导入来修复它。在

import importlib.machinery

问候 安德斯

相关问题 更多 >