상대 가져오기에서 최상위 패키지 오류를 넘어서
패키지 하위 모듈에서 상대 가져오기를 실행할 때 당황스러운 오류가 발생합니다. 패키지 디렉토리 내에서. 특히 "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!