2012-02-21 3 views
3

아직이 문제를 보지 못했지만 하위 패키지와 이름이 같은 모듈을 가져 오는 방법이 궁금합니다. 예를 들어, 가능한 모듈 구조는 다음과 같을 수 있습니다 : 나는 mymodule.string 서브 패키지 같은 내에있는 패키지에서 모든 파이썬 배포판과 함께 제공되는 string 모듈을 필요로하는 경우 지금의파이썬 : 서브 패키지와 이름이 같은 모듈을 가져 오는 방법은 무엇입니까?

mymodule\ 
    __init__.py 
    string.py 

을, 디렉토리 (예 : __init__.py? 다음 코드 줄 모두 하위 패키지를 가져옵니다.

from .    import string 
import mymodule.string as string 
import string 

답변

2

과 같은 작업을 수행 할 수 있습니다 다음을 사용할 수 있습니다 :

>>> from __future__ import absolute_import 

명시 적으로 관련이없는 모든 가져 오기를 절대로 처리해야한다는 것을 Python에 알려줍니다. 즉,이 선언을 사용 후에는 사용하여 내장 문자열 모듈과 자신의 string 모듈 모두에 액세스 할 수 있습니다

>>> import string as the_builtin_string_module 
>>> from . import string as my_package_string_module 

내가이 파이썬 2.7 (파이썬 3.0)에서 기본값이 있다고 생각합니다. 더 많은 정보를 들어

은 다음을 참조하십시오 http://www.python.org/dev/peps/pep-0328/#rationale-for-absolute-imports

+1

감사합니다. 좋은 답변입니다. :) –

0

최상위 가져 오기로 가져올 필요가 없습니다. 그냥 import mymodule.string

, foo = mymodule.string.baz()

당신이 정말로 string로 서브 패키지를 사용하려면 stringimport하지만, 첫 번째 파이썬 2.5 또는 2.6, 당신에 import string as builtinstring

+0

내가 그 일을 거라고 생각하지 않습니다. builtinstring은 mymodule.string이 될 것입니다. – David

관련 문제