Pregunta

Estoy alojando Python en una aplicación SL. Básicamente tengo una propiedad adjunta que le permite pasar el script de Python que luego se ejecuta en el evento de foco perdido del elemento.

La integración de IPY funciona bien siempre y cuando no necesite importaciones de terceros. Copié el paquete formencode a la carpeta de paquetes de sitio en Archivos de programa \ Iron Python ... y luego intenté importar el código de forma mediante programación ScriptEngine.ImportModule e inline. En cada caso no se encuentra el módulo.

Mi código de configuración para el host DLR es el siguiente:

        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");

Cualquier ayuda sería apreciada.

¿Fue útil?

Solución

El código de alojamiento de DLR que tiene se ve bien, pero la ubicación de formencode es incorrecta:

  

Copié el paquete formencode a la carpeta de paquetes de sitio en Archivos de programa \ Iron Python

la línea setup.HostType = typeof (BrowserScriptHost) hace que IronPython busque en el archivo XAP todas las operaciones del sistema de archivos, incluido " importar " ;. Deberá copiar formencode.py en el proyecto de Silverlight de su host y asegurarse de que " Copiar Local " se establece en " Verdadero " por lo que hace su camino en el XAP. Luego, importarlo funcionará.

Esto se espera porque Silverlight no puede leer desde ninguna ubicación en el sistema de archivos de su sistema operativo, ya que necesita funcionar en la máquina de todos :)

Otros consejos

No he intentado hacer exactamente esto, pero sí encontré que para incluir ensambles de terceros (motor de física de farseer en mi caso) tuve que incluir el ensamblaje en el XAP y hacer referencia en el manifiesto de la aplicación.

Pero lo que realmente me llamó la atención fue que tuve que hacer referencia al ensamblaje con su nombre sólido (que solo tenía que hacer en SL, localmente solo podía usar el nombre del ensamblaje).

Espero que esto ayude y me interesará ver cómo terminas resolviéndolo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top