문제

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 *;-).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top