我的 C# 应用程序中有一个使用 IronPython 2 的嵌入式脚本引擎。我创建了 Python 运行时并将一些类添加到全局命名空间,以便脚本可以将它们作为模块导入。
但是,我想不通的一件事(非常基本)是如何发送脚本参数。我意识到我可以只创建一个带有参数列表的变量,但必须有一个正确的方法来做到这一点。此外,以正确的“Python”方式进行操作允许我编译脚本并使用名为 Sphinx 的自动文档生成器。所以最终目标是能够使用:
import sys
sys.argv
在我的一个脚本中让它获取用户指定的参数(通过 C# 应用程序)。
现在,我使用以下方法调用脚本:
// set up iron python runtime engine
_engine = Python.CreateEngine();
_runtime = _engine.Runtime;
_scope = _engine.CreateScope();
// run script
_script = _engine.CreateScriptSourceFromFile(_path);
_script.Execute(_scope);
我曾尝试搜索 API 来添加脚本参数,但没有成功。我也尝试过将它们附加到脚本路径(示例中的 _path),但没有成功。我尝试使用 CreateScriptSourceFrom File 和 CreateScriptSourceFromSting(无论如何这是一个远景......)。
我正在尝试做的事情是否可行?
最佳答案
当您创建引擎时,您可以添加一个包含您的参数的“Arguments”选项:
IDictionary<string, object> options = new Dictionary<string, object>();
options["Arguments"] = new [] { "foo", "bar" };
_engine = Python.CreateEngine(options);
现在sys.argv
将包含 ["foo", "bar"]
.
可以设置options["Arguments"]
任何实现 ICollection<string>
的东西.
关于c# - 脚本参数和嵌入式 IronPython,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601364/