2013-02-01 2 views
2

Je ne suis pas en mesure de faire fonctionner la version compilée de StdLib.Comment configurer IronPython.StdLib 2.7.3

J'ai créé un projet de studio visuel vide (appelé StdLib) et en utilisant NUGET chargé de la dernière version (v2.7.3) IronPython.StdLib qui crée un dossier Lib dans mon projet avec tous les scripts .py. L'action de construction de ces fichiers est définie sur "content" par défaut mais a essayé de compiler à la fois avec ce paramètre et "embedded resource".

dans mon script py J'ai:

import clr 
clr.AddReference("StdLib") 

import os 

il trouve l'Assemblée, mais throws erreur "module os not found".

Si je conditionne les fichiers de bibliothèque standard sous la forme de fichiers lâches dans le dossier de construction et que cela fonctionne correctement.

var runtime = Python.CreateRuntime(); 

var engine = Python.GetEngine(runtime); 
engine.SetSearchPaths(new string[] { Path.GetDirectoryName(
    Assembly.GetExecutingAssembly().Location) + @"\Lib" }); 

////load the script 
dynamic script = runtime.UseFile(ParserScriptPath); 

//execute the script 
var result = script.main("result"); 

Ma question est

  1. peut vous compiler la bibliothèque standard dans une assemblée .Net dans Visual Studio?

  2. Si oui, quelle devrait être l'action de construction pour les fichiers de code .py dans le dossier Lib?

  3. Alors, quelle est la méthode appropriée pour référencer l'assemblage afin de ne pas échouer lorsque vous essayez d'importer des modules de bibliothèque standard?

J'ai examiné le post suivant: IronPython: EXE compiled using pyc.py cannot import module "os"

mais n'ont pas réellement le IronPython installé et pas tout à fait sûr que ce soit la façon de s'y prendre. J'ai utilisé NUGET pour ajouter à la fois IronPython et IronPython.StdLib directement à mon projet. J'ai supposé parce que je peux ajouter le IronPython.StdLib directement à mon projet via NUGET que je pourrais juste le compiler et le référencer.

Répondre

3

Non, vous ne pourrez pas le compiler via Visual Studio (encore). Si vous le souhaitez, vous devrez utiliser download IronPython et utiliser pyc.py pour le faire à partir d'une ligne de commande.

Finalement, je vais avoir des paquets NuGet pour la version pré-compilée et pré-compilée de stdlib, mais je n'ai tout simplement pas encore compris.

+2

Est-ce que quelque chose a changé dans cette affaire depuis que vous avez posté cette réponse? Je construis une extension Visual Studio et j'ai besoin d'intégrer le fichier stdlib dans mon assembly, donc pyc.py ne m'aidera pas beaucoup car il construit un exécutable au lieu de la bibliothèque. – Spook

Questions connexes