2009-09-24 15 views
7

jestem gospodarzem mojego IronPython w webapp C# tak:Nie można użyć DateTime w IronPython

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

A mój kod Pythona wygląda następująco:

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

from System import DateTime 
theDate = DateTime.Today() 

który generuje ten błąd:

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

Spędziłem trochę czasu w Google, a większość kodu, który znalazłem, nie działa.

Moja wersja uruchomieniowa IronPython to v2.0.50727 - czy powinienem dokonać aktualizacji? Myślałam, że DateTime byłby z wczesnych drzwi?

+0

Co dokładnie oznacza komunikat o błędzie, jaki ci daje? Czy Python używa nawiasów na właściwościach? (Jeśli nie, spróbuj 'DateTime.Today'.) –

+0

2.0.50727 brzmi jak numer wersji CLR zamiast numeru wersji IronPython, btw. Która wersja pojawia się po uruchomieniu programu ipy? –

Odpowiedz

11

Spróbuj dodać odniesienie do mscorlib zamiast System.Core. W pewnym momencie zmieniliśmy domyślne zachowanie hostingu (2.0.1? 2.0.2?), Tak, że robi to domyślnie podczas hostingu. Możesz to zrobić ze swojego kodu hostingowego pod numerem:

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

Dzięki, to było na miejscu. – littlecharva

9

Właśnie sprawdziłem, a problem polega na tym, że próbujesz zadzwonić dzisiaj jako metodę zamiast własności. Spróbuj zamiast tego (nie trzeba dodawać odniesienia do System.Core):

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

Patrząc na to pytanie, wydaje się, że błąd wynika z błędu importu, a nie z faktu, że funkcja "Today" jest wywoływana jako funkcja. – Rohit

+0

@Rohit: Nie możemy tak naprawdę powiedzieć, ponieważ nie powiedziano nam, co to jest komunikat o błędzie. Za pomocą nawiasów * otrzymujesz * komunikat o błędzie ... –

+0

Wyjątkiem był wystrzeliwujący polecenie importu, więc nie osiągnął on jeszcze połączenia Today. Dzięki za pomoc w każdym razie. – littlecharva

Powiązane problemy