我正在尝试动态加载我创建的模块。
现在这可以正常工作:
import structures.index
但是,如果我通过动态导入尝试相同的操作,它将失败。
struct = __import__("structures.index")
提供的错误是:
Error ('No module named structures.index',)
有什么想法吗?
编辑:使用完整范围时(它的工作原理?):
struct = __import__("neoform.structures.index")
这不会引发任何错误,但是,它不会加载索引模块,而是会加载“ neoform”模块。
“ struct”的结果是:
<module 'neoform' from '/neoform/__init__.py'>
另外,作为附带的问题,我该如何在动态加载的模块中实例化一个类?(假设所有模块都包含一个通用的类名)。
编辑:解决方案:(感谢coonj和Rick)这最终成功了。不知道为什么(但是),但是fromlist
必须一定是“任何东西”,因为当我将字母“
a”作为值时,它就可以工作(奇怪,因为文件中只有1个类)。
def get_struct_module(self, name):
try:
return = __import__("neoform.structures." + name, fromlist='*')
except ImportError, e:
self.out.add("Could not load struct: neoform.structure." + name + "\n\n" + "Error " + str(e.args))
我不确定“失败”是什么意思,所以我只想说它__import__('structures.index')
应该可以工作,但它不会在当前作用域中分配模块名称。为此(然后在动态导入的模块中使用一个类),您将必须使用:
structures = __import__('structures.index')
structures.index.SomeClass(...)
有关完整的详细信息,__import__
请参见此处。
编辑:(基于问题编辑)
要导入neoform.structures.index
并返回index
模块,请执行以下操作:
structures = __import__('neoform.structures.index',
fromlist=['does not in fact matter what goes here!'])
因此,如果您具有软件包名称的列表packages
,则可以使用以下代码导入其index
模块并MyClass
为每个模块实例化一些类:
modules = [ __import__('neoform.%s.index' % pkg, fromlist=['a'])
for pkg in packages ]
objects = [ m.MyClass() for m in modules ]
本文向大家介绍Python动态加载模块的3种方法,包括了Python动态加载模块的3种方法的使用技巧和注意事项,需要的朋友参考一下 1、使用系统函数__import_() 2、使用imp 模块 3、使用exec
问题内容: 在Java中,我可以向类路径中动态添加内容并加载类(“动态”的意思是无需重新启动应用程序)。是否有一个已知的框架/库可以处理模块的动态加载/卸载而无需重新启动? 通常的设置是负载平衡器,应用程序的多个实例以及逐步部署和重新启动新版本(尤其是对于Web应用程序)。我正在寻找其他东西- 具有多个服务/插件的应用程序,可能是单实例桌面应用程序,在其中禁用单个服务很便宜,但是关闭或重新启动完整
问题内容: 好的,我已经搜索了高低位,但是无法可靠地确定Webpack是否可行。 https://github.com/webpack/webpack/tree/master/examples/require.context 似乎表明可以将字符串传递给函数并加载模块… 但是我的尝试没有用:webpack.config.js server.js modules /模块中名为test.js的模块 但是
问题内容: 我希望IPython或Python解释器在启动它们时自动加载模块。 可能吗? 例如,当我启动IPython时: 在教程页面中可以找到类似SymPy的live shell的 东西。 问题答案: 检查文件-您可以列出要在启动时加载的所有模块。
我有一个包含一些项目(例如汽车)的列表,它是动态的,因此没有固定的长度。当我加载此列表时,它看起来像这样: 之后,我在ng-repeat循环中循环此列表并创建一些复选框,以便我可以选择项目: 现在我有一个用户对象。这个对象里面有一个数组“cars”,我想在其中推送所有选定的汽车,如果我取消选择它,请将其删除。我的对象看起来像这样: 所以当我选择一辆汽车时,它应该被推送到我的用户对象中的数组中,如果
问题内容: 我正在使用express在Node.js中做一个项目。这是我的目录结构: 该目录包含许多与API相关的JS文件。我需要做的是建立一个挂钩系统,每当从快速HTTP服务器请求一个API函数时,它就会执行相应的API处理程序中指定的任何操作。这可能令人困惑,但希望您能理解。 Larry通过POST发送请求以获取用户详细信息。 服务器查找以查找与该请求关联的功能。 服务器执行操作并将数据发送回