Model.new_module#
- Model.new_module(name, path, module)#
将用户模块分配给引用,关联一个新的
ModuleData
对象本模块将一个模块
module
分配给引用name
。module
可以是模块文件的路径,也可以是一个模块对象。当传入模块对象时,需要能够获取该模块的源代码。 模块的源代码会在模型保存时保存到path
指定的文件中。 系统会创建一个新的ModuleData
对象,并将其作为_mx_dataclient
属性插入到模块中。 通过此方法关联的模块不会注册到sys.modules
中,除非它之前已被注册过。 当包含的模型被重新读取时,模块的名称会被设置为
。module> 此方法不应用于Python标准库或已在
sys.modules
中注册的第三方包模块,例如math、numpy和pandas。对于这类模块,应使用常规赋值操作,例如space.np = np
。示例
假设以下代码保存在当前目录下的“sample.py”文件中。
def triple(x) return 3 * x
以下代码在
space
中创建了一个名为 "foo" 的引用:>>> space.new_module("foo", "modules/sample.py", "sample.py")
该模块在
space
中可通过foo
访问:>>> space.foo <module 'sample' from 'C:\path\to\samplemodule.py'> >>> @mx.defcells(space) ... def bar(y): return foo.triple(y) >>> space.foo.bar(3) 9
让
model
作为space
的最终父模型。接下来的代码会在当前目录下创建一个名为"model"的目录,并在"model"目录中,按照该方法path
参数的指定,将模块以"sample.py"的形式保存在"model"目录的"modules"子目录下。>>> model.write("model")
- Parameters:
name (
str
) – 引用的名称path – 要保存模块的文件路径。如果给出的是相对路径,则相对于模型文件夹。
module – 模块文件的路径,可以是字符串或类似路径的对象,或者是一个模块对象。
在版本0.13.0中添加。