> 백엔드 개발 > 파이썬 튜토리얼 > Python 패키지 외부의 상대 가져오기를 처리하는 방법은 무엇입니까?

Python 패키지 외부의 상대 가져오기를 처리하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-12 22:24:17
원래의
891명이 탐색했습니다.

How to Handle Relative Imports Outside of Python Packages?

비패키지 컨텍스트에서 상대 가져오기 처리

Python 외부 디렉터리 구조의 상대 경로를 사용하여 모듈을 가져오려고 할 때 다음과 같은 패키지:

pkg/
  __init__.py
  components/
    core.py
    __init__.py
  tests/
    core_test.py
    __init__.py
로그인 후 복사

다음과 같은 패키지가 발생할 수 있습니다. 오류:

ValueError: Attempted relative import in non-package
로그인 후 복사

Python 가져오기 메커니즘 이해

Python 가져오기 메커니즘은 현재 파일의 name 속성을 ​​사용하여 가져올 적절한 모듈. 파일을 직접 실행하면 "__main__"의 이름이 할당되어 상대 가져오기가 불가능합니다.

가능한 해결 방법

이 문제를 해결하려면 문제가 발생하는 경우 다음 방법 중 하나를 사용할 수 있습니다.

1. -m 옵션 사용

파일을 sys.path에 모듈로 추가하는 -m 옵션을 사용하여 파일을 실행할 수 있습니다.

python -m pkg.tests.core_test
로그인 후 복사

2 . package 속성 지정

스크립트로 실행되도록 특별히 설계된 패키지의 일부가 있는 경우 package 속성을 ​​할당하여 해당 항목을 지정할 수 있습니다. 패키지에 원하는 이름 Hierarchy.

import sys

if __name__ == "__main__":
    sys.__package__ = "pkg.tests"

    from ..components.core import GameLoopEvents
로그인 후 복사

참조:

자세한 내용은 PEP 366을 참조하세요: https://www.python.org/dev/peps/pep -0366/

위 내용은 Python 패키지 외부의 상대 가져오기를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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