2013-12-17 1 views
2

파이썬 C API로 중첩 모듈 (패키지?)을 만들려면 어떻게해야합니까? 대신 현재의python c api가 포함 된 중첩 모듈 (패키지)?

import MainModuleName 
import MainModuleName.SubModuleName 

: IMO 네임 스페이스를 추한 외모와 클러

import MainModuleName 
import MainModuleNameSubModuleName 

나는 클라이언트 코드 (파이썬) 수 있기를 싶습니다 이런 식으로 뭔가.

파일 시스템 디렉토리를 엉망으로 만들 필요없이 가능합니까?

답변

1

파일 시스템 디렉토리를 "엉망으로 만들지 마십시오". 파일 시스템 디렉토리는 정말로 모호하고 많은 불필요한 고통을 피하고 싶지 않다면 서브 모듈을 만드는 방법입니다.

MainModuleName.SubModuleName 모듈을 갖고 싶다면 MainModuleName__init__.py 파일이있는 디렉토리 여야합니다.

C 모듈을 수행하는 일반적인 방법은 모든 C 코드를 이름이 밑줄 (이 경우 _mainmodulename.c)로 시작하는 모듈에 넣은 다음 Python 파일에서 가져 오는 것입니다. 이것은 인 C에서의 것들을 C로만 구현해야하고, 나머지는 Python에서 할 수 있도록 구현되어야합니다. 그런 식으로 순전히 파이썬 폴백을 가질 수도 있습니다. 비슷한 일을하고 파이썬에서 모듈 구조를 만든 다음 밑줄 이름을 가진 C 모듈에서 클래스와 함수를 임포트하는 것이 좋습니다.

+0

좋아, 나는 고도로 aestethic 필요를 위해 파이썬을 굽히지 않으려 고합니다 :) 밑줄 체계는 멋지지만, 모든 C 함수/클래스를위한 파이썬 래퍼를 제공해야한다는 것을 의미합니까? MainModuleName의 사용자는 _MainModuleName 가져 오기를 볼 수 없으므로? – monoceres

+0

아니요,'MainModuleName .__ init__'에서'_MainModuleName'의 함수를 가져 오기 만하면됩니다.'MainModuleName'의 사용자는'MainModuleName에서 X를 임포트 할 수 있습니다 .'. –

+1

어떤 이유로 모듈을 다른 모듈로 가져올 때 가져온 이름이 포함되어 있다고 생각했습니다. 이 방법을 구현 했으므로 그 결과에 매우 만족합니다. Tack så mycket! – monoceres

관련 문제