>백엔드 개발 >파이썬 튜토리얼 >`python -m`을 사용할 때 Python이 패키지 디렉터리에서 상대 가져오기에 실패하는 이유는 무엇입니까?

`python -m`을 사용할 때 Python이 패키지 디렉터리에서 상대 가져오기에 실패하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-24 02:52:08975검색

Why Does Python Fail Relative Imports from a Package Directory When Using `python -m`?

상대 가져오기에서 최상위 패키지 오류를 넘어서

패키지 하위 모듈에서 상대 가져오기를 실행할 때 당황스러운 오류가 발생합니다. 패키지 디렉토리 내에서. 특히 "ValueError: 최상위 패키지를 넘어서 상대 가져오기를 시도했습니다."라는 오류가 발생합니다.

이 오류는 패키지가 로드된 위치를 기록하지 않는 Python의 독특한 동작에서 발생합니다. 결과적으로 python -m package_name.module_name을 사용하여 모듈을 실행할 때 현재 작업 디렉터리는 패키지로 간주되지 않습니다.

따라서 모듈에 액세스하는 것을 목표로 하는 from ..A import foo와 같은 상대 가져오기 시도는 형제 디렉터리에서는 오류 메시지가 나타납니다. 이는 Python에 형제 디렉터리에 대한 필수 참조가 부족하기 때문입니다.

반대로 python -m package_name.package_submodule.module_name을 사용하여 모듈을 실행하면 from ..A import foo import 문을 성공적으로 해결할 수 있습니다. 이 경우 Python은 상위 디렉터리에 대한 정보를 유지하므로 형제 디렉터리에 액세스할 수 있습니다.

Python이 실용적인 유틸리티에도 불구하고 현재 작업 디렉터리를 패키지로 간주하지 않는 이유는 분명하지 않습니다. 이러한 제한으로 인해 패키지 디렉터리 내에서 상대 가져오기를 수행할 때 혼란과 예상치 못한 오류가 발생할 수 있습니다.

위 내용은 `python -m`을 사용할 때 Python이 패키지 디렉터리에서 상대 가져오기에 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.