Question

J'héberge Python dans une application SL. En gros, j'ai une propriété attachée qui vous permet de transmettre un script Python qui est ensuite exécuté sur l'événement de perte de focus de l'élément.

L’intégration IPY fonctionne bien tant que je n’ai pas besoin d’importations tierces. J'ai copié le paquet formencode dans le dossier site-packages sous Program Files \ Iron Python ... puis essayé d'importer à la fois le code de formulaire à l'aide de ScriptEngine.ImportModule et inline. Dans chaque cas, le module est introuvable.

Mon code d'installation pour l'hôte DLR est le suivant:

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

Toute aide serait appréciée.

Était-ce utile?

La solution

Le code d'hébergement DLR que vous avez est beau, mais l'emplacement de votre code de formulaire est incorrect:

  

J'ai copié le package formencode dans le dossier site-packages sous Program Files \ Iron Python

la ligne setup.HostType = typeof (BrowserScriptHost) force IronPython à rechercher dans le fichier XAP toutes les opérations du système de fichiers, y compris "import". Vous devez copier le fichier formencode.py dans le projet Silverlight de votre hôte et vous assurer que "Copier en local" est est défini sur " True " donc il fait son chemin dans le XAP. Ensuite, l’importation fonctionnera.

Cela est prévu car Silverlight ne peut lire à partir d'aucun emplacement du système de fichiers de votre système d'exploitation, car il doit fonctionner sur l'ordinateur de tout le monde:)

Autres conseils

Je n’ai pas essayé de faire exactement cela, mais j’ai trouvé que, pour inclure des assemblages tiers (le moteur de recherche physique dans mon cas), je devais inclure l’assemblage dans le XAP et le référencer dans le Manifest.application.

Mais ce qui m'a vraiment attiré, c'est que je devais faire référence à l'assemblage avec son nom fort (ce que je n'avais qu'à faire en SL, localement, je pouvais simplement utiliser le nom de l'assemblage).

J'espère que cela vous aidera et je serai intéressé de voir comment vous allez le résoudre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top