2017-10-06 18 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) 평 파일

#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 코드를 변환합니다. 문제가 발견되면 .c 파일이 여전히 생성 될 수 있지만 STDOUT/STDERR에 기록됩니다.

-a 옵션을이 프로그램에 전달하면 컴파일러에서 코드의 일부분을 강조 표시하여 추가 Python 오버 헤드가 발생하는 추가 HTML 파일을 생성하게 할 수 있습니다.

이것은 실제로 코드를 파이썬으로 가져올 수있는 공유 라이브러리로 컴파일하지 않습니다. 생성 된 C 코드에서 보통 Python의 setuptools/distutils 툴 체인을 통해 C 컴파일러를 호출해야합니다.