调用IronPython时出现KeyNotFoundException

本文关键字:KeyNotFoundException IronPython 调用 | 更新日期: 2023-09-27 18:09:26

我需要一个c#的MediaWiki解析器。
(http://www.mediawiki.org/wiki/Alternative_parsers)
由于不存在这样的解析器,而且我确实想要一个MediaWiki解析器,而不是像WikiPlex这样的其他解析器,因此我正在研究使用其他语言中的一些现有解析器,并且能够成功地调用kiwi解析器来实现这一目标。然而,问题是它不能正确处理Unicode/UTF-8。

现在,我想使用这个脚本:
http://www.connellybarnes.com/code/python/mw2html
并通过IronPython使用。

我从这里使用IronPython 2.7:
http://ironpython.net/

我下载了二进制压缩文件(不是安装程序)。

然后我使用这个教程作为基础:
http://www.codeproject.com/KB/cs/IronPythonMethod_CShap.aspx

我是这样做的:

using System;
using IronPython.Hosting;

namespace IronPythonMethodInvokationDemo
{

    class Program
    {

        // http://stackoverflow.com/questions/6557494/referencing-python-import-assemblies-when-calling-from-ironpython-in-c
        static void Main(string[] args)
        {

            //Microsoft.Scripting.Hosting.ScriptEngine m_engine = Python.CreateEngine(DefaultEngineOptions());
            Microsoft.Scripting.Hosting.ScriptEngine m_engine = Python.CreateEngine();
            System.Collections.Generic.ICollection<string> paths = m_engine.GetSearchPaths();
            paths.Add(@"D:'username'Documents'Visual Studio 2010'Projects'IronPython'IronPython-Bin-2.7'IronPython-2.7'Lib"); // modules path
            paths.Add(@"D:'username'Documents'Visual Studio 2010'Projects'IronPython'IronPython-Bin-2.7'IronPython-2.7"); // ipy.exe path
            m_engine.SetSearchPaths(paths);

            //Step 1: 
            //Creating a new script runtime             
            //var ironPythonRuntime = Python.CreateRuntime();
            var ironPythonRuntime = m_engine.Runtime;
            try
            {
                //Step 2:
                //Load the Iron Python file/script into the memory
                //Should be resolve at runtime
                //dynamic loadIPython = ironPythonRuntime.UseFile("first.py");
                //ironPythonRuntime.GetBuiltinModule();
                dynamic loadIPython = ironPythonRuntime.UseFile("mw3html.py");
                //Step 3:
                //Invoke the method and print the result
                /*
                Console.WriteLine(
                                  string.Format("Addition result from IronPython method for {0} and {1} is {2}", 
                                  100,200, loadIPython.add(100, 200))
                                 );
                */
                Console.WriteLine( string.Format("Result for IronPython main method: {0}", loadIPython.main())  );
            } // End Try
            catch (System.IO.FileNotFoundException ex)
            {
                Console.WriteLine(ex.Message);
            } // End Catch
            Console.ReadKey(true);
        } // End Sub Main

    } // End Class Program

} // End Namespace IronPythonMethodInvokationDemo

如果我使用first.py,那么一切工作正常。现在,使用mw2html.py,我得到一个

KeyNotFoundException on ironPythonRuntime.UseFile("mw3html.py");为键"…

有人知道这是什么意思吗?

调用IronPython时出现KeyNotFoundException

继续你的评论:socket.py在IronPython中不存在。相反,socket模块是用c#编写的,位于IronPython.Modules.dll中。确保它也被您的项目引用,并且与IronPython.dll位于同一目录下。

相关文章:
  • 没有找到相关文章