私はCythonを使用して、次の.pyx
ファイルにコンパイルしようとしています:クラスをcython化すると、空の宣言子エラー?
import collections
nil = object() # used to distinguish from None
class TrieNode(object):
__slots__ = ['char', 'output', 'fail', 'children']
def __init__(self, char):
self.char = char
self.output = nil
self.fail = nil
self.children = {}
def __repr__(self):
if self.output is not nil:
return "<TrieNode '%s' '%s'>" % (self.char, self.output)
else:
return "<TrieNode '%s'>" % self.char
をそしてCythonは、このエラーがスローされます。
running build_ext
cythoning TrieNode.pyx to TrieNode.c
Error compiling Cython file:
------------------------------------------------------------
...
nil = object() # used to distinguish from None
class TrieNode(object):
__slots__ = ['char', 'output', 'fail', 'children']
def __init__(self, char):
^
------------------------------------------------------------
TrieNode.pyx:7:24: Empty declarator
building 'TrieNode' extension
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -IE:\Python26\include -IE:\Python26\PC /Tc
TrieNode.c /Fobuild\temp.win-amd64-2.6\Release\TrieNode.obj
TrieNode.c
TrieNode.c(1) : fatal error C1189: #error : Do not use this file, it is the result of a failed Cython compilation.
error: command 'cl.exe' failed with exit status 2
私のsetup.pyは現在、次のようになります。
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup(
cmdclass = {'build_ext': build_ext},
ext_modules = [Extension("TrieNode", ["TrieNode.pyx"])]
)
私はPythonクラスが問題なくCythonファイルにコンパイルされた例を見ましたが、これは動作していないようです。誰かが私に行方不明を教えてもらえますか?
@eryksun:それは変です。私は同じバージョンを使用しています。あなたは64ビットマシンも使用していますか? – Legend
@eryksun:ロックスター! 'char'を' _char'に変更して正しくコンパイルしました。これを回答として投稿して受け入れることができますか? – Legend