IronPython 在托管时如何加载模块?
How does IronPython loads modules while being hosted?
我对 IronPython 在托管时加载模块的方式感到困惑。
我使用的是使用 MSI 软件包安装的 IronPython 2.7.7,我已经引用了 C:\Program Files (x86)\IronPython 2.7\IronPython.dll
和 C:\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
得到的搜索路径只包含
"."
"D:\IronPythonTest\bin\Debug\Lib"
"D:\IronPythonTest\bin\Debug\DLLs"
我的 Debug
文件夹下既没有 Lib
也没有 DLLs
文件夹。
那么 IronPython 如何设法加载 datetime
模块?
提前感谢您的澄清。
我对 IronPython 在托管时加载模块的方式感到困惑。
我使用的是使用 MSI 软件包安装的 IronPython 2.7.7,我已经引用了 C:\Program Files (x86)\IronPython 2.7\IronPython.dll
和 C:\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
得到的搜索路径只包含
"."
"D:\IronPythonTest\bin\Debug\Lib"
"D:\IronPythonTest\bin\Debug\DLLs"
我的 Debug
文件夹下既没有 Lib
也没有 DLLs
文件夹。
那么 IronPython 如何设法加载 datetime
模块?
提前感谢您的澄清。