我试图在我的
Windows机器上编译Pyparsing但是遇到以下错误:
python setup.py build_ext --inplace running build_ext cythoning pyparsing.pyx to pyparsing.c Error compiling Cython file: ------------------------------------------------------------ ... If C{include} is set to true,the matched expression is also parsed (the skipped text and matched expression are returned as a 2-element list). The C{ignore} argument is used to define grammars (typically quoted strings and comment s) that might contain false matches. """ def __init__( self,other,include=False,ignore=None,failOn=None ): ^ ------------------------------------------------------------ pyparsing.pyx:2764:31: Expected an identifier,found 'include' Error compiling Cython file: ------------------------------------------------------------ ... def __init__( self,failOn=None ): super( SkipTo,self ).__init__( other ) self.ignoreExpr = ignore self.mayReturnEmpty = True self.mayIndexError = False self.includeMatch = include ^ ------------------------------------------------------------ pyparsing.pyx:2769:28: Expected an identifier or literal building 'pyparsing' extension creating build creating build\temp.win32-2.7 creating build\temp.win32-2.7\Release C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W 3 /GS- /DNDEBUG -IC:\Python27\include -IC:\Python27\PC /Tcpyparsing.c /Fobuild\t emp.win32-2.7\Release\pyparsing.obj pyparsing.c pyparsing.c(1) : fatal error C1189: #error : Do not use this file,it is the re sult of a Failed Cython compilation. error: command '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' fa iled with exit status 2
我使用Microsoft Visual C 2008 Express版进行了编译,使用的Pyparsing模块是最新版本.请问,有谁知道如何使这项工作?
解决方法
先生,我按照你的说法做了,但仍然有编译时警告:
python setup.py build_ext --inplace running build_ext cythoning pyparsing.pyx to pyparsing.c warning: pyparsing.pyx:413:8: Unreachable code building 'pyparsing' extension creating build creating build\temp.win32-2.7 creating build\temp.win32-2.7\Release C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W 3 /GS- /DNDEBUG -IC:\Python27\include -IC:\Python27\PC /Tcpyparsing.c /Fobuild\t emp.win32-2.7\Release\pyparsing.obj pyparsing.c C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\link.exe /DLL /nologo /INCRE MENTAL:NO /LIBPATH:C:\Python27\libs /LIBPATH:C:\Python27\PCbuild /EXPORT:initpyp arsing build\temp.win32-2.7\Release\pyparsing.obj /OUT:C:\Users\iProsper\Desktop \pyparsing\pyparsing.pyd /IMPLIB:build\temp.win32-2.7\Release\pyparsing.lib /MAN IFESTFILE:build\temp.win32-2.7\Release\pyparsing.pyd.manifest Creating library build\temp.win32-2.7\Release\pyparsing.lib and object build\ temp.win32-2.7\Release\pyparsing.exp C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe -nologo -manifest build \temp.win32-2.7\Release\pyparsing.pyd.manifest -outputresource:C:\Users\iProsper \Desktop\pyparsing\pyparsing.pyd;2
警告实际上在第4行:警告:pyparsing.pyx:413:8:无法访问的代码.然后我将该行改为:
def __getattr__( self,name ): if True: #name not in self.__slots__: if name in self.__tokdict: if name not in self.__accumNames: return self.__tokdict[name][-1][0] else: return ParseResults([ v[0] for v in self.__tokdict[name] ]) else: return "" else: return None
然后重新编译它.我注意到的一件事是,即使我发出警告和编辑,它们都成功编译,但是当我尝试使用以下代码进行测试时:
from pyparsing import Word,alphas greet = Word(alphas) + ',' + Word(alphas) + '!' greeting = greet.parseString('Hello,World!') print greeting
我收到以下错误:
Traceback (most recent call last): File "C:\nwaomachux\build_pyparsing\checkout.py",line 1,in from pyparsing import Word,alphas File "pyparsing.pyx",line 3414,in init pyparsing (pyparsing.c:100064) AttributeError: 'builtin_function_or_method' object has no attribute 'ANY_VALUE'
我会进一步修改文件并发送给你检查它,但我只有几个小时的Pyparsing,所以我还没有掌握完整的源代码.
我不知道将withAttribute.ANY_VALUE = object()移动到def withAttribute(args,* attrDict)的开头是什么效果:function表示.请问,它有什么问题?谢谢.