중첩 Python C 확장/모듈?
-
16-09-2019 - |
문제
C-Python 모듈이 다른 사람에게 로컬에 있도록 C- 파이썬 모듈을 어떻게 컴파일합니까? 예 : "bar"라는 모듈과 "myModule"이라는 다른 모듈이있는 경우 "myModule.bar"를 통해 가져 오도록 "bar"를 어떻게 컴파일합니까?
(이것이 제대로 표현되지 않으면 죄송합니다. 적절한 용어가 무엇인지 잘 모르겠습니다.)
setup.py에서 다음을 시도했지만 작동하지 않는 것 같습니다.
from distutils.core import setup, Extension
setup(name='mymodule',
version='1.0',
author='Me',
ext_modules=[Extension('mymodule', ['mymodule-module.c']),
Extension('bar', ['bar-module.c'])])
편집하다
감사합니다 Alex. 이것이 바로 내가 사용한 것입니다.
from distutils.core import setup, Extension
PACKAGE_NAME = 'mymodule'
setup(name=PACKAGE_NAME,
version='1.0',
author='Me',
packages=[PACKAGE_NAME],
ext_package=PACKAGE_NAME
ext_modules=[Extension('foo', ['mymodule-foo-module.c']),
Extension('bar', ['mymodule-bar-module.c'])])
물론 "MyModule"이라는 폴더가 포함되어 있습니다. __init__.py
.
해결책
지시 사항이 있습니다 여기:
Extension ( 'foo', [ 'src/foo1.c', 'src/foo2.c'])))))
루트 패키지에 사는 연장을 설명하고
Extension ( 'pkg.foo', [ 'src/foo1.c', 'src/foo2.c']))))
PKG 패키지에서 동일한 확장자를 설명합니다. 소스 파일과 결과 객체 코드는 두 경우 모두 동일합니다. 유일한 차이점은 파일 시스템의 위치 (따라서 Python의 네임 스페이스 계층 구조의 위치)가 그 결과 확장 수명입니다.
패키지는 항상 모듈이 포함 된 디렉토리 (또는 zipfile)입니다. __init__
. 패키지 본문 인 모듈을 만들려면 해당 모듈이 호출됩니다. __init__
패키지의 디렉토리 (또는 zipfile) 아래에 살고 있습니다. 나는 C에서 한 번도 해본 적이 없다. 직접 작동하지 않으면 모듈의 이름을 지정하십시오. _init
대신 __init__.py
하다 from _init import *
(거의 합법적 인 용도 중 하나 from ... import *
;-).