execファイルと異なる動作が必要な場合は、.NETで関数を作成してこれをスコープに設定することで、独自のものを簡単に作成してこのようなことを実行できます(共有スコープ)。これにより、必要に応じて追加の機能を追加することもできます。
これは動作するようです:エンジンの設定
:
var py = Python.CreateEngine();
var source = py.CreateScriptSourceFromFile(@"..\..\IronPython\body.py");
var scope = py.CreateScope();
その後、私はスクリプトで使用可能な関数を作成し、今すぐスコープに
Action<string> execFileCallback = fileName =>
{
var s2 = py.CreateScriptSourceFromFile(fileName);
s2.Execute(scope);
};
((dynamic)scope).myexecfile = execFileCallback;
source.Execute(scope);
それを設定します私のBody.pyは次のようになります:
someVarSetByBody = "This was set by the body"
Console.WriteLine("Body is loading")
myexecfile(r"..\..\IronPython\Header.py")
Console.WriteLine("Body has loaded")
そして、私のHeader.pyは、次のようになります
Console.WriteLine("Header is loading")
Console.WriteLine("Variable set by body: %s" % someVarSetByBody)
Console.WriteLine("Header has loaded")
今あなたが変数を共有することができますので、別のスクリプトで同じスコープを使用することができます。