2012-06-05 41 views
1

在它說,「源」可以是STR或AST對象IronPython的編譯()不接受AST對象

當試圖編譯我的AST根文檔:

dl = compile(newRoot, '<string>', 'eval') 

我得到這個例外:

expected str, got Module 

我正在使用IronPython的最新版本。

有沒有想法爲什麼這不起作用?我發現的所有例子似乎都是這樣做的,沒有任何問題。

是否有解決方法來編譯AST對象?

謝謝!

PD:我發現了這個問題,但似乎也沒有什麼活動:http://ironpython.codeplex.com/workitem/32526

+0

a'Module'是一個AST對象嗎? – 2012-06-05 00:41:00

+0

是的,Module是一類ast節點。 – user1275011

+0

這是IronPython中的一個bug。我不得不貶低AST,將其轉換爲字符串,然後將其提供給compile()。 :( – user1275011

回答

0

首先,IronPython的不支持此。

在IronPython中實際上很難支持(我不知道它需要支持到今天)。 IronPython的_ast模塊是它自己的AST的一個包裝,目前只實現了IronPython AST => CPython AST的轉換,但不是相反。這是一個公平的(誠實,非常乏味的)工作,所以我不知道什麼時候能夠修復。

如果有一個受歡迎的程序或庫因此被破壞,將其移動到優先級列表中,並且始終歡迎修補程序。

+0

setuptools似乎使用此功能。 https://bitbucket.org/pypa/setuptools/src/f5ac515/_markerlib/markers.py?at=default – minhee