2013-07-29 1 views
1

나는이 패키지의 구조를 가지고 :패키지 모듈을 서로 어떻게 가져 옵니까?

widget/ 
    __init__.py 
    core.py 
    extension.py 

__init__.py가 비어 있습니다.

core.py이 포함

import widget.extension as extension 

그것은 작동하지만 난 것처럼 느낀다 사이드 스텝 패키지를 그냥 글로벌 경로에서 가져 오기 (즉, 만 다시보고 그것의 등반 그것으로). core.py에서 단지 import extension이라면 작동하지 않습니다. 이게 중요합니까? 내가 처음부터 틀렸어? 대신이 두 모듈을 모두 __init__.py으로 가져와야합니까?

답변

1

저는 여러분이 파이썬 3을 사용하고 있다고 가정합니다; 파이썬 2에서 import extension은 파이썬 2가 글로벌 절대 참조를 찾기 전에 상대적인 가져 오기를 먼저 찾게 될 것이다.

당신이 더 많은 옵션이 있습니다

from widget import extension 

및 업데이트 할 필요없이 widget 패키지의 이름을 변경 할 수 있습니다 현재 패키지를 기준으로

from . import extension 

후자의 수입을 모든 내부 수입. 당신이 사용하는 것은 스타일과 맛의 문제입니다.

+0

나는 마지막 하나를 매우 좋아한다. 슬프게도 필자는 가까운 미래에 Python 2.6에 갇혀 있습니다. 그것은 직장에서 코드를 작성한 앱에 내장되어 있습니다. 내가 가져가. import extension'은 2.x에서 작동하지 않습니다. –

+0

"import extension"이 어떻게 작동하지 않았는가에 대해 자세히 설명 했어야합니다. :-)'에서. import extension'은 Python 2.x에서 파이썬 2.3부터 잘 작동합니다. –

+0

와우, 나는 두 번 혼란스러워했다. 문제가있는 곳은 'extension.py'가 아니 었습니다. 'test/test_extension.py'는 테스트 폴더 밖에서 확장을 가져올 수 없습니다. 나는 너무 늦게 코딩하고 있다고 생각한다. –