2013-01-03 92 views
2

現在我收到錯誤: 應用程序中的服務器錯誤。無法導入名稱類型說明:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。異常詳細信息:IronPython.Runtime.Exceptions.ImportException:無法導入名稱輸入源錯誤:第44行:expr));第45行:第46行:script.Execute(scope);第48行:return scope.GetVariable(「result」);Sympy的IronPython腳本

public static string PythonEvaluate(string expr) 
{ 
    var engine = Python.CreateEngine(); var paths = engine.GetSearchPaths(); 

    paths.Add(@"C:\Python27\Lib\Site-Packages"); 
    paths.Add(@"C:\sympy"); 
    engine.SetSearchPaths(paths); 

    var scope = engine.CreateScope(); 

    var script = engine.CreateScriptSourceFromString(string.Format(@" 
       import sys 
       sys.platform = "win32" // Default is cli 

       from sympy import * 
       n = Symbol('n') 
       value = {0} 

       import clr 
       from System import String 
       result = clr.Convert(value , String)", 
      expr)); 

    script.Execute(scope); 

    return scope.GetVariable("result"); 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    var result = PythonEvaluate("limit((1 + 3/n)**n, n, oo)"); 
    Label3.Text = result; 
} 
+0

什麼問題?告訴我們錯誤信息是什麼。 – asmeurer

+0

順便說一句,SymPy還沒有在IronPython中正式測試,所以問題可能只是它在那裏沒有真正的工作。 – asmeurer

回答

1

正如我在評論指出,這是不可能知道什麼是錯的,你不告訴我們是什麼錯誤,但可能性是您錯誤地使用limit。您需要將它傳遞給一個符號對象,而不是一個lambda函數,它需要三個參數,並調用無窮大,oo,而不是inf

n = Symbol("n") 
limit((1 + 3/n)**n, n, oo) 
+0

我改變了我的代碼與檢查whitespacing然後我試過你的解決方案我得到這個錯誤你有什麼想法嗎?模塊名爲fcntl 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關er的更多信息ror以及它在代碼中的起源。 異常詳細信息:IronPython.Runtime.Exceptions.ImportException:否模塊的fcntl命名 源錯誤: 線39:結果= clr.Convert(值,字符串)」,表達式)); 第40行: 線41:script.Execute(範圍); 42行: 43行:return scope.GetVariable(「result」); – Alijohnn

+0

你可以從鐵蟒殼運行'import sympy'? – asmeurer

+0

現在我收到錯誤了沒有模塊functl? – Alijohnn

3

我不熟悉在.NET中執行Python代碼,但在Python中,每個縮進都有含義。我猜你需要刪除所有前導空格的代碼:

// ... 
    var script = engine.CreateScriptSourceFromString(string.Format(@" 
from sympy import * 
value = {0} 

import clr 
from System import String 
result = clr.Convert(value , String)", expr)); 

    script.Execute(scope); 
+0

不行不行。 – Alijohnn

+0

@ user1940128還是一樣的錯誤?這些線前面是否真的沒有空白?當我將它們作爲單行添加時,'@「'行有任何*尾部空格? – poke

+0

?我得到這個錯誤script.Execute(scope); =>意外的標記'值' – Alijohnn

相關問題