Probleme beim Importieren von Modulen von Drittanbietern bei der Ausrichtung von Ironpython in SL

StackOverflow https://stackoverflow.com/questions/1403384

Frage

Ich hostete Python in einer SL -App. Grundsätzlich habe ich eine angehängte Eigenschaft, mit der Sie das Python -Skript übergeben können, das dann auf das Lost Focus -Ereignis des Elements ausgeführt wird.

Die IPY -Integration funktioniert einwandfrei, solange ich keine Importe von Drittanbietern brauche. Ich habe das FormCode-Paket in den Ordner "Site-Packages unter Programmdateien Iron Python" kopiert und dann versucht, FormCodes sowohl programmatisch mithilfe von scriptengine.importmodule und Inline zu importieren. In jedem Fall wird das Modul nicht gefunden.

Mein Setup -Code für den DLR -Host lautet wie folgt:

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

Jede Hilfe wäre geschätzt.

War es hilfreich?

Lösung

Der DLR -Hosting -Code, den Sie haben, sieht gut aus, aber wo Sie Formencode platzieren, ist falsch:

Ich habe das FormEncode-Paket in den Ordner "Site-Packages" unter Programmdateien Iron Python kopiert

das setup.HostType = typeof(BrowserScriptHost) Line bewirkt, dass Ironpython in der XAP-Datei nach allen Operationen des Dateisystems, einschließlich "Import", nachgibt. Sie müssen formencode.py in das Silverlight Project Ihres Hosts kopieren und sicherstellen, dass "Lokal" auf "True" eingestellt ist, damit es in die XAP gelangt. Dann wird es funktionieren, es zu importieren.

Dies wird erwartet, weil Silverlight von einem Ort auf dem Dateisystem Ihres Betriebssystems nicht von einem Ort aus lesen kann, da es auf dem Maschine aller Arbeiten arbeiten muss :)

Andere Tipps

Ich habe nicht genau versucht, genau das zu tun, aber ich habe festgestellt, dass ich die Baugruppen der Drittanbieter (Farseer Physics Engine in meinem Fall) einbeziehen musste, musste ich die Montage in die XAP aufnehmen und sie in der App.manifest verweisen.

Aber das, was mich wirklich erwischte, war, dass ich die Versammlung mit ihrem starken Namen verweisen musste (was ich nur in SL tun musste, lokal konnte ich einfach den Namen der Montage verwenden).

Ich hoffe, das hilft und ich werde interessiert sein zu sehen, wie Sie es am Ende lösen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top