2017-10-06 89 views
0

私は最近sentdex tutorial for cythonに出くわしました。彼のチュートリアルコードを試してみる中で、私が気づいたのは、コンパイルする前にcythonコードをデバッグする方法です。コンパイルする前にcythonコードをデバッグするには?

私たちのインタプリタでexample_original.pyを実行することによって、元のコードをデバッグすることができます。

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

しかし、cythonizedコードのdosentが動作します。これは私が

1)PYファイル

#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) 

エラー

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

2)PYXファイル

#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) 

エラー

./example_cython: not found 
をしようとした二つの方法であります

コンパイルする前にcythonコードをデバッグする正しい方法は何ですか?

+0

私はこの質問が当てはまるとは思わない。 Cythonはコンパイルされた言語です。デバッグするには、コンパイルする必要があります。 – DavidW

答えて

0

Cythonコードが構文的に正しいこと、静的解析で検出可能な問題がないことを確認するには、cythonまたはcythonizeコマンドラインツールを使用できます。

cython path/to/file.pyx Cythonコードを.pyxの代わりに.cという拡張子を持つ同じ名前のファイルに保存されたCコードに変換するCythonコンパイラを実行するには、問題が検出された場合は、STDOUT/STDERRに書き込まれますが、.cファイルがまだ生成されている可能性があります。

このプログラムに-aオプションを渡すと、追加のPythonオーバーヘッドが発生するコードの一部を強調する追加のHTMLファイルをコンパイラで生成させることができます。

これは実際にコードをPythonでインポートできる共有ライブラリにコンパイルしません。生成されたCコードでPythonのsetuptools/distutilsツールチェーンを通じてCコンパイラを呼び出す必要があります。

関連する問題