2017-03-09 1 views
2

파이썬 래퍼로 파이썬 래핑 된 C++ 프로젝트 Foo을 가지고 있습니다 : py_foo.Bar(). 프로젝트는 .pxd와 .pyx 파일을 사용하여 정상적으로 정의되고 표준`setup.py '를 사용하여 설치됩니다. 행동 양식.프로젝트간에 Cython 정의가 있습니까?

Foo.Bar 인스턴스를 사용하는 생성자가있는 C++ 클래스가있는 다른 Cython wrapped 프로젝트 Baz이 있습니다. 현재 전환 및 유형 오류가 발생합니다 (예 : Bar은 유형 식별자가 아닙니다.

프로젝트간에 import/cimport이 가능합니까?

답변

0

예. Cython documentation에서 :

당신은 모듈 이름이라는 모듈의 사이 썬 컴파일러 modulename.pxd라는 파일에 대한 검색 cimport

. 이 파일은 포함 파일 경로 (-I 명령 행 옵션 또는 cythonize())의 include_path 옵션과 sys.path에 지정된 경로와 함께이 파일 을 검색합니다.

package_data를 사용하여 setup.py 스크립트에 .pxd 파일을 설치하면 은 다른 패키지가 모듈의 항목을 종속 항목으로 가져올 수 있습니다. 만약 파일 modulename.pyx 컴파일마다 또한

는 해당 정의 파일 modulename.pxd 먼저 경로 (그러나의 sys.path) 등을 따라 검색하고, 발견하면, 처리 전에 처리 .pyx 파일.

중요한 부분은 가운데 단락입니다. Cython 클래스가 정의 된 프로젝트의 setup.py 파일에 package_data 키에 .pxd 파일을 나열해야합니다. 예를 들어,

# setup.py 
setup(
    name='my_cython_package', 
    packages=['example'], 
    package_data={'example': '*.pxd'}, # or wherever the files are 
    # ...etc... 
) 

이렇게하면 나머지 패키지와 함께 설치되며 다른 프로젝트에서 해당 항목을 가져올 수 있습니다.