IronTextBoxControl2のフォークに[rlcompleter][1]
機能を追加しようとしています(RevitPythonShell)。 rlcompleter.py
でIronPython 2.0のホスティング時に "__main__"モジュールを公開するには?
import __main__
:
しかし、私はラインとハードのトラブルを抱えています。これは私がそのようなモジュールを持っていないためです。私は、IronPython 2.0のコードベースを調べて、モジュールを公開する方法を見つけようとしています。
私はIronPython.Runtime.PythonContext
のインスタンスからPublishModule(string name, PythonModule module)
という方法でそうすることができます。しかし、私は次のように問題抱えている:
- は私がを持って何
PythonModule
インスタンス
を取得PythonContext
インスタンス
ScriptEngine
とScriptScope
です。私はスコープをモジュールとして公開することを希望します__main__
。私が理解しているように、スコープは既にモジュールに付属していますが、どのようにアクセスするのか分かりません。ここで が、私はこれを一緒にネクタイしたいのですが、コード内のポイントです:
/// <summary>
/// Set up an IronPython environment - for interactive shell or for canned scripts
/// </summary>
public void SetupEnvironment(ScriptEngine engine, ScriptScope scope)
{
// add variables from Revit
scope.SetVariable("__revit__", _commandData.Application);
scope.SetVariable("__commandData__", _commandData);
scope.SetVariable("__message__", _message);
scope.SetVariable("__elements__", _elements);
scope.SetVariable("__result__", (int)Result.Succeeded);
// add preconfigures variables
scope.SetVariable("__vars__", RevitPythonShellApplication.GetVariables());
/* register scope as __main__ module here?! */
// add the search paths
AddSearchPaths(engine);
}