development

Python : 포함 된 패키지 가져 오기

big-blog 2020. 12. 25. 22:45
반응형

Python : 포함 된 패키지 가져 오기


패키지 내부에있는 모듈 __init__.py에서 해당 패키지 내에 정의 된 함수를 사용해야 합니다. 그 기능을 사용할 수 있도록 패키지 내에있는 모듈 내에서 패키지를 가져 오려면 어떻게해야합니까?

가져 오기 __init__모듈 내부하면 패키지를 가져올 수 있지만, 대신에 모듈 이름이되지 않습니다 __init__다른 이름을 가진 것들의 두 복사본으로 이어지는, ...

이것을 수행하는 비단뱀적인 방법이 있습니까?


또한 Python 2.5부터 상대 가져 오기가 가능합니다. 예 :

from . import foo

http://docs.python.org/tutorial/modules.html#intra-package-references 에서 인용 :


Python 2.5부터는 위에서 설명한 암시 적 상대 가져 오기 외에도 from module import name 형식의 import 문을 사용하여 명시 적 상대 가져 오기를 작성할 수 있습니다. 이러한 명시 적 상대 가져 오기는 선행 점을 사용하여 상대 가져 오기에 관련된 현재 및 상위 패키지를 나타냅니다. 예를 들어 주변 모듈에서 다음을 사용할 수 있습니다.

from . import echo
from .. import formats
from ..filters import equalizer

이것은 귀하의 질문에 정확히 대답하지는 않지만 함수를 __init__.py파일 외부로 이동하고 해당 패키지 내부의 다른 모듈로 이동하도록 제안 합니다. 그런 다음 해당 함수를 다른 모듈로 쉽게 가져올 수 있습니다. 원하는 경우 __init__.py해당 함수 (패키지를 가져올 때)를 가져올 파일에 import 문도있을 수 있습니다 .


따라서 패키지의 이름이 지정 testmod되고 초기화 파일 이 지정 되고 testmod/__init__.py패키지 내의 모듈이 파일 submod.py에서 가져온 경우 testmod에 정의 된 원하는 것을 submod.py말하고 import testmod사용할 수 있어야합니다 .


상황이 무엇인지는 잘 모르겠지만이 방법으로 "다른 이름"문제를 해결할 수 있습니다.

import __init__ as top
top.some_function()

아니면? :

from __init__ import some_function
some_function()

Django에서 manage.py 파일은 from django.core.management import execute_manager을 갖지만 execute_manager모듈은 아닙니다. 디렉토리 __init__.py모듈 내의 기능 management입니다.

참조 URL : https://stackoverflow.com/questions/436497/python-import-the-tained-package

반응형