상대 가져오기 오류: 최상위 패키지를 넘어서
Python 3에서 상대 가져오기는 동일한 패키지 내의 모듈을 참조하는 편리한 방법을 제공합니다. 디렉토리 또는 패키지. 그러나 "ValueError: 최상위 패키지를 넘어서 상대 가져오기 시도" 오류가 발생하면 당황스러울 수 있습니다.
다음 패키지 구조를 고려하십시오.
package/ __init__.py A/ __init__.py foo.py test_A/ __init__.py test.py
하위 패키지(예: test.py의 ..A import foo)에서 다음 조건에 해당하는 경우 앞서 언급한 오류가 발생할 수 있습니다. met:
이유 이 오류는 Python 가져오기 메커니즘의 근본적인 측면에서 발생합니다. 패키지가 로드되면 "최상위 패키지"로 간주되며 상대 가져오기는 해당 패키지 또는 하위 패키지 내의 모듈만 참조할 수 있습니다. 그러나 Python은 모듈을 직접 실행할 때 패키지의 상위 디렉터리를 패키지로 자동 인식하지 않습니다.
따라서 위의 시나리오에서 패키지 디렉터리 내에서 python -m test_A.test를 실행하면 상위 디렉터리는 디렉토리('패키지/')는 패키지로 간주되지 않으며 ..A import foo의 상대 가져오기는 효과적으로 최상위 패키지를 넘어서려고 시도합니다.
이 오류를 해결하려면 다음을 확인하세요. 모듈을 실행할 때 전체 패키지 경로를 지정합니다:
python -m package.test_A.test
위 내용은 Python에서 \'ValueError: 최상위 패키지를 넘어서 상대 가져오기를 시도했습니다\' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!