2009-09-24 71 views
7

使用日期時間,我主持我的IronPython在C#web應用程序,像這樣:不能在IronPython的

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

而且我的Python代碼如下所示:

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

from System import DateTime 
theDate = DateTime.Today() 

產生這個錯誤:

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

我在Google上花了一些時間,並且我發現的大部分代碼似乎都不工作了。

我的IronPython運行時版本是v2.0.50727 - 我應該升級嗎?我以爲DateTime會從早期的門開始?

+0

它給你的錯誤信息到底是什麼? python是否在屬性上使用括號? (如果沒有,請嘗試'DateTime.Today'。) – 2009-09-24 16:31:54

+0

2.0.50727聽起來像是一個CLR版本號,而不是IronPython版本號,順便說一句。如果你只是運行ipy,會出現什麼版本? – 2009-09-24 16:39:10

回答

11

嘗試添加引用MSCORLIB而不是System.Core程序。我們在某些時候(2.0.1?2.0.2?)更改了默認託管行爲,以便在託管時默認執行此操作。你可以通過你的託管代碼來做到這一點:

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

謝謝,這是現貨。 – littlecharva 2009-09-29 13:41:04

9

剛剛檢查過,問題是您正試圖將Today作爲方法而不是屬性。試試這個(無需添加到System.Core程序的引用):

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

看看這個問題,這個錯誤似乎是源於導入失敗,而不是「Today」被稱爲函數的事實。 – Rohit 2009-09-25 03:15:54

+0

@Rohit:我們不知道,因爲我們還沒有被告知錯誤信息是什麼。用括號在你做*得到*錯誤信息... – 2009-09-25 06:30:39

+0

異常是導入命令觸發,所以它甚至沒有達到今天的呼叫。 但無論如何感謝您的幫助。 – littlecharva 2009-09-29 13:42:30