代码之家  ›  专栏  ›  技术社区  ›  Glenn Block

在SL中托管IronPython时导入第三方模块时出现问题

  •  1
  • Glenn Block  · 技术社区  · 15 年前

    我正在SL应用程序中托管Python。基本上,我有一个附加属性,允许您传递Python脚本,然后在元素的失去焦点事件上执行该脚本。

    只要我不需要任何第三方导入,IPY集成就可以正常工作。我将formencode包复制到Program Files\Iron Python下的site packages文件夹中。。。然后尝试使用ScriptEngine.ImportModule和inline以编程方式导入formencode。在每种情况下都找不到模块。

            var setup = new ScriptRuntimeSetup();
            setup.HostType = typeof(BrowserScriptHost);
            setup.LanguageSetups.Add(Python.CreateLanguageSetup(null));
            setup.Options["SearchPaths"] = new string[] { string.Empty };
    
            _runtime = new ScriptRuntime(setup);
            _engine = _runtime.GetEngine("Python");
            _scope = _engine.CreateScope();
            _engine.ImportModule("formencode");
    

    任何帮助都将不胜感激。

    2 回复  |  直到 15 年前
        1
  •  1
  •   tarn    15 年前

    我还没有完全尝试这样做,但我确实发现要包含第三方程序集(在我的例子中是farseer Physical engine),我必须在XAP中包含该程序集,并在App.manifest中引用它。

    希望这有帮助,我会有兴趣看看你最终如何解决它。

        2
  •  1
  •   Jimmy Schementi    15 年前

    这个 setup.HostType = typeof(BrowserScriptHost) 行使IronPython在XAP文件中查找所有文件系统操作,包括“导入”。您需要将formencode.py复制到主机的Silverlight项目中,并确保将“copy Local”设置为“True”,以便它进入XAP。然后导入它就可以了。

    推荐文章