Domanda

Sto ospitando Python in un'app SL. Fondamentalmente ho una proprietà collegata che ti consente di passare lo script Python che viene quindi eseguito sull'evento focus perso dell'elemento.

L'integrazione IPY funziona bene fino a quando non ho bisogno di importazioni di terze parti. Ho copiato il pacchetto formencode nella cartella dei pacchetti del sito in Program Files \ Iron Python ... e poi ho provato a importare il formencode sia a livello di programmazione usando ScriptEngine.ImportModule e inline. In ogni caso il modulo non viene trovato.

Il mio codice di configurazione per l'host DLR è il seguente:

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

Qualsiasi aiuto sarebbe apprezzato.

È stato utile?

Soluzione

Il codice di hosting DLR che hai sembra buono, ma dove hai inserito il codice form è sbagliato:

  

Ho copiato il pacchetto formencode nella cartella dei pacchetti del sito in Programmi \ Iron Python

la riga setup.HostType = typeof (BrowserScriptHost) fa sì che IronPython cerchi nel file XAP tutte le operazioni del file system, incluso " import " ;. Dovrai copiare formencode.py nel progetto Silverlight del tuo host e assicurarti che " Copia locale " è impostato su " True " quindi si fa strada nell'XAP. Quindi importarlo funzionerà.

Ciò è previsto perché Silverlight non è in grado di leggere da nessuna posizione sul file system del sistema operativo, poiché deve funzionare sul computer di tutti :)

Altri suggerimenti

Non ho provato a fare esattamente questo, ma ho scoperto che per includere assiemi di terze parti (nel mio caso un motore fisico più debole) ho dovuto includere l'assemblaggio in XAP e fare riferimento in App.manifest.

Ma la cosa che mi ha veramente colpito è stato che dovevo fare riferimento all'assembly con il suo nome sicuro (cosa che dovevo fare solo in SL, a livello locale potevo semplicemente usare il nome dell'assembly).

Spero che questo aiuti e sarò interessato a vedere come riuscirai a risolverlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top