2017-10-06 2 views
0

Ich bin kürzlich auf sentdex tutorial for cython gestoßen. Während ich seine Tutorial-Codes ausprobiere, ist mir aufgefallen, wie wir unseren Cython-Code vor der Kompilierung debuggen werden.Wie Debuggen eines Cython-Codes vor dem Kompilieren?

Den ursprünglichen Code können wir debuggen, indem wir ihn in unserem Interpreter example_original.py ausführen.

#example_original.py 
def test(x): 
    y = 0 
    for i in range(x): 
     y += i 
    return y 
print test(20) 

Aber der cythonisierte Code Dosent Arbeit. Dies ist die zwei Möglichkeiten, die ich

1) py Datei

#example_cython.py 
cpdef int test(int x): 
    cdef int y = 0 
    cdef int i 
    for i in range(x): 
     y += i 
    return y 

print test(5) 

Fehler versucht

File "example_cython.py", line 3 
    cpdef int test(int x): 
      ^
    SyntaxError: invalid syntax 

2) pyx Datei

#example_cython.pyx 
cpdef int test(int x): 
    cdef int y = 0 
    cdef int i 
    for i in range(x): 
     y += i 
    return y 

print test(5) 

Fehler

./example_cython: not found 

Was ist der richtige Weg, Cython-Codes vor dem Kompilieren zu debuggen?

+0

Ich denke nicht, dass diese Frage viel Sinn macht. Cython ist eine kompilierte Sprache. Um es zu debuggen, müssen Sie es kompilieren. – DavidW

Antwort

0

Um zu überprüfen, ob Ihr Cython-Code syntaktisch korrekt ist und keine offensichtlichen Probleme bei der statischen Analyse auftreten, können Sie das Befehlszeilentool cython oder verwenden.

, um den Cython-Compiler auszuführen und den Cython-Code in C-Code zu konvertieren, der in einer Datei mit demselben Namen mit einer Erweiterung .c statt .pyx gespeichert ist. Wenn Probleme festgestellt werden, werden sie in den STDOUT/STDERR geschrieben, obwohl eine .c Datei möglicherweise noch generiert wird.

Sie können die Option -a an dieses Programm übergeben, damit der Compiler eine zusätzliche HTML-Datei generiert, die Teile Ihres Codes hervorhebt, die zusätzlichen Python-Overhead verursachen.

Dies kompiliert Ihren Code nicht tatsächlich in eine gemeinsam genutzte Bibliothek, die Sie mit Python importieren können. Sie müssen einen C-Compiler für den generierten C-Code aufrufen, normalerweise über Pythons setuptools/distutils Toolchain.

Verwandte Themen