将资源中的模块导入XBMC插件

时间:2014-06-26 01:44:48

标签: python plugins module python-import xbmc

我正在开发一个XBMC插件,它需要一些不能通过addon.xml中的requires标签获得的Python模块(据我所知,它们不在XBMC存储库中)。插件开发的文档似乎表明你可以通过将模块添加到插件目录的resources / lib /子目录来实现。

我已经完成了这项工作,在XBMC中进行测试时,由于无法找到导致此模块,因此导致导入错误。

我已经阅读了我在SO上发现的关于这个名为Importing a python module into XBMC for use within an addon的主题的另一个问题,但是那里提出的解决方案是在导入之前将模块目录添加到路径中,对我来说不起作用无论是。我得到相同的导入错误。

事实上,我不认为答案是正确的,因为XBMC中的os.getcwd()在从插件中调用时不会返回插件目录路径;所以将它给出的路径连接到/ resources / lib,因为答案表明它不会产生有效的路径。我修改了示例以使用getAddonInfo通过xbmcaddon模块从Addon对象中查找插件路径,并将其添加到与/ resources / lib连接的路径中,但它仍然无效。

将模块放入插件目录的根目录也不起作用。我还没有找到关于如何在初始教程之外正确执行此操作的具体文档,说我应该将它添加到resources / lib子目录。

那么有人知道如何做到这一点或者在另一个XBMC插件中成功完成了这个吗?

1 个答案:

答案 0 :(得分:1)

弄清楚我的错误。我没注意到我添加的路径。当我应该使用getAddonInfo('profile')

时,我使用getAddonInfo('path')将插件配置文件目录添加到sys.path

为了将来参考,如果你想将你的插件的子目录添加到路径中,这就是我所做的:

import xbmcaddon
import os
...

my_addon = xbmcaddon.Addon('plugin.video.my_plugin')
addon_dir = xbmc.translatePath( my_addon.getAddonInfo('path') )

sys.path.append(os.path.join( addon_dir, 'resources', 'lib' ) )

import <whatever modules you want>

我想这是密切关注错误消息内容的另一个教训。