我正在將IronPython嵌入到C#中,作爲修改我正在使用的程序的一種方法。因此,有多個文件需要一次使用。編譯所有文件C#/ IronPython
Code = "";
Engine = Python.CreateEngine();
Runtime = Engine.Runtime;
var files = Directory.GetFiles("script", "*.py", SearchOption.AllDirectories);
foreach (var tr in files.Select(file => new StreamReader(file)))
{
Code += "\n";
Code += tr.ReadToEnd();
tr.Close();
}
Scope = Engine.CreateScope();
Engine.CreateScriptSourceFromString(AddImports(Code)).Execute(Scope);
這需要的所有文件/腳本,並把它們組合成一個字符串有一個腳本源從他們創建的,這是當然的,有缺陷的方法,因爲如果類不按字母繼承訂單,UnboundNameException將發生
class bar(foo):
pass
class foo():
pass
我該如何去編譯所有的文件以正常的方式?
我的python腳本不會相互交互,只能與C#部分交互。我是否需要/生成一個導入所有內容的Python腳本? –
這取決於他們如何「與C#部分交互」。如果腳本「在.NET中執行某些操作」一旦被加載,它們必須從.NET或python加載。您的python腳本可能不會在運行時間意義上彼此交互,但它們中的類/類型彼此依賴。是否可以拆分包含入口點和庫腳本的文件?或者你可以從.net調用某種定義的入口函數?然後你可以直接從.net加載它們並獲得輸入函數。 –
沒有入口點,只有庫腳本。 –