我尝试使用IronPython在Visual Studio中运行python脚本,直到我尝试使用python脚本中的任何库,使用此代码。
viewWillAppear
Test.py看起来像这样。
var ipy = Python.CreateRuntime();
dynamic test = ipy.UseFile("C:/Python/Test.py");
var whatever = test.python_string();
MessageBox.Show(whatever);
我尝试添加
def python_string():
return "Okay"
或Visual Studio程序不会执行的python代码的任何其他libary import语句。
我正在使用Visual Studio 2015,我完全按照他们的网站设置IronPython。我猜我必须将库添加到Visual Studio中的某个位置,但我不知道在哪里或如何。
希望我明白这一点。提前谢谢。答案 0 :(得分:1)
使用SharpDevelop时遇到了同样的问题。按照here说明操作,为外部模块/包创建类库(DLL)。将输出DLL添加到项目引用中。然后在C#main()中加载这样的程序集:
// make sure to include "using System.IO"
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "serial.dll");
engine.Runtime.LoadAssembly(Assembly.LoadFile(path));
engine
指的是您的Python ScriptEngine
。
我用它来为pyserial
模块构建一个程序集,并将它们包含在C#/ IronPython项目中。我不知道是否有更好的方法,但经过数小时的挫折,这对我有用。
答案 1 :(得分:0)
当我遇到这个问题时,Stack上有另外一个类似性质的问题,但我现在没有任何运气。 (如果有人遇到它,请在评论中删除一个链接。)
我使用它的方法是向脚本引擎添加路径,就像这样。
ScriptRuntimeSetup setup = Python.CreateRuntimeSetup(null);
ScriptRuntime runtime = new ScriptRuntime(setup);
ScriptEngine engine = Python.GetEngine(runtime);
var paths = engine.GetSearchPaths();
paths.Add(prod.GetImportScope());
paths.Add(AppDomain.CurrentDomain.BaseDirectory + "Lib");
paths.Add(AppDomain.CurrentDomain.BaseDirectory + "selenium");
engine.SetSearchPaths(paths);
当您在IronPython中运行脚本时,它不会在Python文件的通常范围内运行。因此,您必须告诉它在哪里可以找到Python StdLib以及您要导入的任何其他文件。即使脚本本身运行正常,但如果没有告诉它在哪里找到它的资源,它就不会在IronPython中运行。
我不是IronPython专家,所以可能有一种更有效的方法。