2017-06-08 1 views
2

IronPythonがホストされている間にモジュールをロードする方法について混乱します。IronPythonはホストされている間どのようにモジュールをロードしますか?

私はIronPython 2.7.7をMSIパッケージを使用してインストールしています。私はC:\Program Files (x86)\IronPython 2.7\IronPython.dllC:\Program Files (x86)\IronPython 2.7\Microsoft.Scripting.dllを参照しました。

IronPythonは、IronPython.Runtime.Exceptions.ImportException: 'No module named modulename'を投げているモジュールを読み込めないことがありますが、すべて正常に動作することがあります。例えば

var engine = Python.CreateEngine(); 
engine.CreateScriptSourceFromString("import datetime; print datetime.datetime.now()").Execute(); 

作品が、

var engine = Python.CreateEngine(); 
engine.CreateScriptSourceFromString("import json; print json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])").Execute(); 

にはありません。

私は、検索パスをengineに設定することを提案しました。だから私は

var searchPaths = engine.GetSearchPaths(); 
searchPaths.Add(@"C:\Program Files (x86)\IronPython 2.7\Lib"); 
engine.SetSearchPaths(searchPaths); 

jsonモジュールの動作を使用して、今の例を追加しました。

しかし、私はengineから取得する検索パスは

  1. "."
  2. "D:\\IronPythonTest\\bin\\Debug\\Lib"
  3. "D:\\IronPythonTest\\bin\\Debug\\DLLs"

そして、私は私のDebugフォルダの下にもないLibDLLsフォルダを持っていないが含まれています。

IronPythonはどのようにしてdatetimeモジュールをロードすることができますか?

ご説明いただきありがとうございます。

答えて

3

エンジンに関連するパスを追加する基本的な方法は正しいです。

IronPythonは、(可能な限り)大量の標準ライブラリを使用します。 CPythonでネイティブに実装されている低レベルのモジュールは、IronPythonのC#で実装されています。それらの1つはmodulesdatetimeです。したがって、IronPython.Modules.dllがある限り、特定のロード/パス処理を行わなくても、いくつかの標準モジュールを利用できます。

+0

ありがとうございました!今私は考えを持っている。 – DfM

関連する問題