所以在工作中,我正在为我们开发一种将工具/插件推向整个团队的方法。我实际上已经启动并运行了系统,它是完全动态的,除了我要谈论的主题(这都是在 python 中完成的)。在启动时,Maya 会根据服务器上的文件夹检查本地文件夹,并检查它们是否不同,并处理和复制所需的文件/目录,以及删除我们在服务器上删除的旧插件。该系统足够灵活,用户可以创建所有插件的自定义架子,我们可以在不破坏所有用户架子的情况下重新组织后端的文件夹。插件是通过 Maya 主界面中的下拉菜单访问的,我们可以在系统和插件中自由添加子文件夹,而不会弄乱代码。
这一切都很好,直到我开始制作插件,当他们在他们的文件夹中导入一个模块时,也是动态的。因此,当我开始在根目录周围移动插件文件夹时,如果我有一个为其创建路径的导入模块,那么插件脚本中的导入模块路径现在是错误的。我已经有办法通过我的菜单设置获取插件的正确路径信息。我在导入模块和访问该模块中的类时遇到问题。
所以如果导入模块类的标准
from fileName import className
__import__
我使用的方式看起来像。
className = __import__("folderN.folderN.folderN.fileName", {}, {}, ["className"])
但是使用该方法,我失去了像使用常规 from import 方法一样调用该类名的能力。我通过这样做解决了这个问题
className = className.className
但这是一个相当丑陋的方法,我希望能够只导入和调用名称而不做额外的步骤。我不太了解这种导入方法,我知道我缺少一些东西。
我只是以错误的方式进行此导入过程吗?有没有办法让它在不附加到maya路径的情况下查看插件的本地目录,这样我就可以执行导入方法的常规方式,而没有在我移动插件时必须更改的奇怪路径?