gpt4 book ai didi

ironpython - 托管 IronPython : import files which contain custom functions

转载 作者:行者123 更新时间:2023-12-04 05:19:07 26 4
gpt4 key购买 nike

情况

托管 IronPython 允许开发人员将参数设置到脚本中。每次创建 IPy 引擎对象时,我都会设置这样一个参数(ParamName),但是当我尝试导入使用我的自定义参数的 python 模块时,我得到一个异常消息“全局名称'ParamName'不是定义”。

代码示例

class PythonScriptingEngine
{
private ScriptEngine pyEngine;
private ScriptScope pyScope;

public PythonScriptingEngine()
{
pyEngine = Python.CreateEngine();
pyScope = pyEngine.CreateScope();
}

public object Run(string script)
{
ScriptSource source = pyEngine.CreateScriptSourceFromString(script);
CompiledCode compiled = source.Compile();
return compiled.Execute(pyScope);
}

public void SetParameter(string name, int value)
{
pyScope.SetVariable(name, value);
}
}

// execution
var engine = new PythonScriptingEngine();
engine.SetParameter("ParamName", 10);
engine.Run(@"import SampleScriptWithParamName");

问题

这种情况有什么解决方法吗?如何导入使用自定义参数的 python 脚本?

最佳答案

正如西蒙指出的那样,问题在于 ParamName不在 SampleScriptWithParamName 的范围内.实现这一点的一种方法是将其添加到内置变量集中,如下所示:

public void SetParameter(string name, int value)
{
pyEngine.GetBuiltinModule().SetVariable(name, value);
}

这应该使它在任何地方都可用,但我现在没有能力对其进行测试。

关于ironpython - 托管 IronPython : import files which contain custom functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13874688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com