2009-09-24 11 views
7

Je hébergement mon IronPython dans un C# webapp comme ceci:Ne peut pas utiliser DateTime dans IronPython

var engine = Python.CreateEngine(); 
var scope = engine.CreateScope(); 
var script = Engine.CreateScriptSourceFromString(pythonCode, SourceCodeKind.Statements); 
script.Execute(scope); 

Et mon code python ressemble à ceci:

import clr 
clr.AddReference('System.Core') 

from System import DateTime 
theDate = DateTime.Today() 

qui génère cette erreur: J'ai passé du temps sur Google et la plupart du code que j'ai trouvé ne semble plus fonctionner. Ma version d'exécution IronPython est v2.0.50727 - devrais-je mettre à jour? Je pensais que DateTime aurait été à partir de portes tôt cependant?

+0

Quel est exactement le message d'erreur qu'il vous donne? Python utilise-t-il des crochets sur les propriétés? (Sinon, essayez 'DateTime.Today'.) –

+0

2.0.50727 ressemble à un numéro de version CLR plutôt qu'à un numéro de version IronPython, btw. Quelle version apparaît si vous venez de lancer ipy? –

Répondre

11

Essayez d'ajouter une référence à mscorlib au lieu de System.Core. Nous avons modifié le comportement d'hébergement par défaut à un certain point (2.0.1? 2.0.2?) Afin que cela soit fait par défaut lors de l'hébergement. Vous pouvez le faire à partir de votre code d'hébergement avec:

engine.Runtime.LoadAssembly(typeof(string).Assembly); 
+0

Merci, c'était sur place. – littlecharva

9

Juste vérifié, et le problème est que vous essayez d'appeler aujourd'hui comme une méthode au lieu d'une propriété. Essayez plutôt (pas besoin d'ajouter une référence à System.Core):

import clr 
from System import DateTime 
theDate = DateTime.Today 
print theDate 
+0

En regardant la question, l'erreur semble provenir d'un échec d'importation, plutôt que le fait que "Aujourd'hui" est appelée en tant que fonction. – Rohit

+0

@Rohit: Nous ne pouvons pas vraiment le dire, car on ne nous a pas dit quel est le message d'erreur. Avec les crochets sur vous obtenez * un * message d'erreur ... –

+0

L'exception était le déclenchement sur la commande d'importation, de sorte qu'il n'avait même pas atteint l'appel Aujourd'hui. Merci quand même pour votre aide. – littlecharva

Questions connexes