Je dispose d'un fichier Python avec comme contenu:Intégration IronPython dans une application C# - erreur d'importation sur urllib
import re
import urllib
class A(object):
def __init__(self, x):
self.x = x
def getVal(self):
return self.x
def __str__(self):
return "instance of A with value '%s'" % (self.getVal())
J'ai aussi un projet simple console C# avec le code suivant:
engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromFile("test.py");
ScriptScope scope = engine.CreateScope();
ObjectOperations op = engine.Operations;
source.Execute(scope); // class object created
object klaz = scope.GetVariable("A"); // get the class object
object instance = op.Call(klaz, "blabla waarde"); // create the instance
object method = op.GetMember(instance, "getVal"); // get a method
string result = (string)op.Call(method); // call method and get result (9)
Console.WriteLine("Result: " + result); //output: 'Result: blabla waarde'
(Je l'ai obtenu de this stackoverflow querstion and answer)
Si je laisse de côté l'instruction d'importation urllib dans le fichier Python, tout fonctionne correctement. (Ce qui signifie qu'il trouve le module re)
Mais dès que je soit ajouter import urllib
ou import urllib2
-je obtenir l'exception suivante:
ImportException was unhandled
No module named urllib
donc en quelque sorte, il ne peut pas trouver qu'urllib. J'ai vérifié le dossier lib IronPython et urllib et urllib 2 sont définitivement là. La même exception est levée lorsque j'importe urllib dans le code C#. (engine.ImportModule("urllib");
)
Des idées?
Je voudrais gérer les importations dans le code python et non dans le code C#.
(Je voudrais éviter des trucs comme ça: engine.ImportModule("urllib");
)
Edit: quelques informations supplémentaires sur ce que je suis en fait va l'utiliser pour (peut-être quelqu'un a une alternative):
I aura une application C# principale et les scripts python seront utilisés comme extensions ou plugins pour l'application principale.
J'utilise Python pour ne pas avoir besoin de compiler les plugins.
Désolé pour l'acceptation (très tardive) de votre réponse, je n'avais pas regardé en arrière à la question. Cela fonctionne parfaitement. –