IronPython ImportException: No module named loggin

2019-02-17 16:34发布

问题:

I got ironpython working fine on mono, but it doesn't import the logging module. Executing this code:

ScriptEngine engine = Python.CreateEngine();
dynamic logging = engine.ImportModule("logging");

yields the following error:

IronPython.Runtime.Exceptions.ImportException: No module named logging

The IronPython assemblies I have included are up-to-date: IronPython.Modules.dll, Microsoft.Dynamic.dll, Microsoft.Scripting.dll, Microsoft.Scripting.Metadata.dll.

How can I make use of the logging module within Ironpython?

回答1:

It's not enough to add the assemblies to your C# application. logging is written in python, and it's part of the standard library. You'll have to add the standard library to IRONPYTHONPATH as well. You can do it like this:

var engine = Python.CreateEngine();
var paths = engine.GetSearchPaths();
paths.Add(@"C:\Path\to\your\standard\library");
engine.SetSearchPaths(paths);

If you need the standard library you would probably need to ship it with your application. My suggestion is to zip it and then add the zip file to the paths.