0
當我嘗試添加對IronPython引擎實例的引用時,引用get按預期添加到引用。如果我創建了另一個引擎實例,則AddReference會執行而不會出現錯誤,但引用不會添加到引用中,並且導入語句會失敗,並顯示「no module named ...」。爲什麼clr.AddReference在第二個IronPython引擎上失敗?
var engine = Python.CreateEngine();
dynamic clr = engine.Runtime.GetClrModule();
clr.AddReference("IronPython.StdLib");
var references = (IEnumerable<Assembly>)clr.References;
Debug.Assert(references.Any(asm => asm.FullName.StartsWith("IronPython.StdLib"))); // ok
var source = "import pydoc\npydoc.plain(pydoc.render_doc(str))";
var result = engine.Execute<string>(source);
Debug.Assert(result.StartsWith("Python Library Documentation")); // ok
var engine2 = Python.CreateEngine();
dynamic clr2 = engine2.Runtime.GetClrModule();
clr2.AddReference("IronPython.StdLib");
var references2 = (IEnumerable<Assembly>)clr.References;
Debug.Assert(references2.Any(asm => asm.FullName.StartsWith("IronPython.StdLib"))); // fails
result = engine.Execute<string>(source); // throws ImportException "no module named pydoc"
Debug.Assert(result.StartsWith("Python Library Documentation"));
我的IronPython 2.7.5的二進制釋放試圖(安裝到GAC)和C#4.5,IronPython.StdLib
與PYC Python標準11b的預編譯DLL。
我也嘗試過使用github自編譯的IronPython 2.7.5和2.7.6,但第一個engine.execute
已經失敗,並且,儘管引用被添加了。
我做錯了什麼,或者它只是一個錯誤?