2009-09-24 13 views
7

Ich bin Hosting meine Ironpython in einem C# Webapp etwa so:Kann nicht verwenden Datetime in Ironpython

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

Und meine Python-Code sieht wie folgt aus:

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

from System import DateTime 
theDate = DateTime.Today() 

Welche diesen Fehler erzeugt:

IronPython.Runtime.Exceptions.ImportException: Cannot import name DateTime 

Ich habe einige Zeit auf Google verbracht und der Großteil des Codes, den ich gefunden habe, scheint nicht mehr zu funktionieren.

Meine IronPython Runtime Version ist v2.0.50727 - sollte ich upgraden? Ich hätte gedacht, DateTime wäre von frühen Türen obwohl gewesen?

+0

Was genau ist die Fehlermeldung, die es Ihnen gibt? Verwendet Python Klammern für Eigenschaften? (Wenn nicht, versuchen Sie 'DateTime.Today'.) –

+0

2.0.50727 klingt wie eine CLR-Versionsnummer anstatt einer IronPython-Versionsnummer, BTW. Welche Version wird angezeigt, wenn Sie ipy einfach ausführen? –

Antwort

11

Versuchen das Hinzufügen eines Verweises anstelle von System.Core mscorlib. Wir haben das Standard-Hosting-Verhalten irgendwann geändert (2.0.1? 2.0.2?), So dass dies standardmäßig beim Hosting geschieht. Sie können dies von Ihrem Hosting-Code mit tun:

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

Danke, das war genau richtig. – littlecharva

9

Nur überprüft, und das Problem ist, dass Sie versuchen, heute als eine Methode anstelle einer Eigenschaft aufrufen. Versuchen Sie, diese statt (keine Notwendigkeit, einen Verweis auf System.Core hinzugefügt werden):

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

Wenn man sich die Frage ansieht, scheint der Fehler eher auf einen Importfehler zurückzuführen zu sein als auf die Tatsache, dass "Today" als Funktion aufgerufen wird. – Rohit

+0

@Rohit: Wir können es nicht wirklich sagen, da uns nicht gesagt wurde, was die Fehlermeldung ist. Mit den Klammern auf * erhalten * eine Fehlermeldung ... –

+0

Die Ausnahme wurde auf den Import-Befehl ausgelöst, so dass es nicht einmal den Today-Aufruf erreicht hatte. Danke trotzdem für Ihre Hilfe. – littlecharva