> 백엔드 개발 > 파이썬 튜토리얼 > Python 패키지에서 상대 가져오기를 성공적으로 수행하려면 어떻게 해야 합니까?

Python 패키지에서 상대 가져오기를 성공적으로 수행하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-12-16 18:00:33
원래의
780명이 탐색했습니다.

How Can I Successfully Perform Relative Imports in Python Packages?

Python의 상대 가져오기

Python에서는 패키지 내에서 모듈을 가져오는 것이 까다로운 작업일 수 있습니다. 다음 디렉토리 구조를 고려하십시오.

app/
   __init__.py
   sub1/
      __init__.py
      mod1.py
   sub2/
      __init__.py
      mod2.py
로그인 후 복사

mod1.py에서 작업 중이고 mod2.py에서 무언가를 가져와야 한다고 가정해 보겠습니다. 다음을 시도해 볼 수 있습니다.

from ..sub2 import mod2
로그인 후 복사

그러나 이렇게 하면 "비패키지에서 상대 가져오기 시도" 오류가 발생합니다. 해결책은 Python이 파일 시스템 위치에 관계없이 __main__(예: python mod1.py)으로 실행되는 모듈을 최상위 모듈로 해석한다는 사실에 있습니다.

상대 가져오기를 활성화하려면 가져오기 모듈이 __main__으로 실행 중입니다. 이는 패키지를 기본 모듈로 사용하여 인터프리터를 실행하여 수행할 수 있습니다:

python -m app.sub1.mod1
로그인 후 복사

또는 __package__ 속성을 사용하여 상위 패키지를 수동으로 지정할 수 있습니다:

import sys
sys.path.insert(0, '..')
from sub2.mod2 import MyClass
로그인 후 복사

이것은 메서드는 시스템 경로를 조작하지만 모듈을 __main__으로 실행할 필요는 없습니다.

그러나 상대 가져오기의 경우 하위 패키지 내에서 작업하려면 __init__.py 파일이 각 디렉터리에 있는지 확인하는 것이 중요합니다. 이러한 파일은 패키지 마커 역할을 하며 __package__ 속성을 활성화하여 포함 패키지를 참조합니다.

위 내용은 Python 패키지에서 상대 가져오기를 성공적으로 수행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿