저는 C에서 파이썬 확장을 배우거나 실험하고 있습니다. 파이썬적인 방식으로 사용할 수 있도록 C 라이브러리를 랩핑하려고합니다. 예를 들면 : C 코드네임 스페이스/패키지 이름과 파이썬의 C 확장자
import mylib
widget = mylib.widget.Widget(name="Hello!")
widget.show()
mylib.utils.say_hello()
, PyModule_Create
에 전달 모듈의 이름이 각각 "MYLIB", "mylib.widget"및 "mylib.utils"이다. mylib.widget
모듈에는 새로운 Widget
유형이 포함되어 있습니다.
그러나 이러한 확장 패키지/네임 스페이스 스타일로 설치하는 방법을 알아낼 수 없습니다. 나는 시도했다 :
from distutils.core import setup, Extension
setup(
...
ext_modules = [Extension('mylib', sources=['src/mylib.c'], ...),
Extension('mylib.widget', sources=['src/widget.c'], ...),
Extension('mylib.utils', sources=['src/utils.c'], ...)]
)
그러나 그것은 작동하지 않는다. "mylib에는 위젯이라는 모듈이 없습니다."
C 확장은 일반적으로 패키지/배포는 어떻게됩니까?
유효한 mylib 패키지가 있습니까? 즉 mylib 디렉토리에 \ _ \ _ init \ _ \ _. py 파일이 있습니다. –