2013-05-19 50 views
0

所以我試圖用解析發電機waxeye,但我嘗試使用生成的解析器使用Python程序的教程例子,我得到錯誤:waxeye解析器的錯誤進口

AttributeError: 'module' object has no attribute 'Parser' 

這裏是代碼的參考部分:

import waxeye 
import parser 

p = parser.Parser() 

最後一行導致錯誤。由waxeye生成的解析器放在與init .py相同的目錄下。它是parser.py。

任何人都知道我的代碼有什麼問題?


編輯20-05-2013:

Beggining的parser.py文件:

from waxeye import Edge, State, FA, WaxeyeParser 

class Parser (WaxeyeParser): 
+1

這可能是你正在導入的'parser'不是你想要的。嘗試在導入之後插入一個'print parser .__ file__',或嘗試以不同的方式命名解析器模塊。另外,如果使用Python 2.7,則可以從'__future__'模塊啓用'absolute_imports'。 – Apalala

+0

好的!因此'print parser .__ file__'給出了幾乎相同的錯誤:'AttributeError:'module'object has no attribute'__file __''。 更改解析器的名稱實際工作。謝謝!如果你把它作爲答案 - 我馬上會接受它。 – Hazardius

回答

1

這可能是該parser模塊要導入是不是一個你要。

嘗試插入:

print parser.__file__ 

進口之後,或嘗試不同的命名你的解析器模塊。

此外,如果使用Python 2.7,則可以從__future__模塊啓用absolute_imports

1

Python已經有一個名爲解析器的模塊。導入語句將加載系統分析器模塊而不是本地parser.py文件。解決此問題的最簡單方法是更改​​parser.py的文件名。例如,xxparser.py。

import waxeye 
import xxparser 

p = xxparser.Parser()