상대 가져오기에서 최상위 패키지 오류 초과
최상위 패키지 이상으로 상대 가져오기를 시도하면 Python에서 "ValueError: 시도됨"이 발생합니다. 최상위 패키지를 넘어서 상대 가져오기' 오류가 발생했습니다. 원인을 이해하기 위해 제공된 패키지 구조를 분석해 보겠습니다.
package/ __init__.py A/ __init__.py foo.py test_A/ __init__.py test.py
test.py에서 from ..A import foo 줄은 A 하위 패키지에서 가져오려고 시도합니다. 이 하위 패키지는 내부에서 직접 액세스할 수 없습니다. test_A 서브패키지. Python에서는 현재 패키지 범위 내에서 상대 가져오기를 유지해야 합니다.
패키지 폴더 내에서 python -m test_A.test를 실행하면 Python은 test_A.test를 현재 패키지의 모듈로 해석합니다. 그러나 -m 플래그가 모듈을 직접 호출하므로 더 이상 패키지를 패키지로 간주하지 않습니다. 이로 인해 최상위 패키지(패키지)를 넘어서는 상대 가져오기 시도가 발생하여 오류가 발생합니다.
반대로 상위 폴더에서 python -m package.test_A.test를 실행하면 Python은 패키지를 인식합니다. 패키지로 제공되며 해당 범위 내에서 상대 가져오기를 허용합니다. 패키지 패키지 내에서 A 하위 패키지에 액세스할 수 있기 때문에 이는 from ..A import foo에서 성공적으로 해결됩니다.
이 오류는 상대 가져오기가 현재 패키지의 범위 내에 유지되도록 하는 것이 중요함을 강조합니다. -m 플래그를 사용하여 모듈을 직접 호출할 때 Python은 현재 작업 디렉터리를 패키지로 간주하지 않으므로 발생한 것과 같은 오류가 발생할 수 있습니다.
위 내용은 Python에서 \'ValueError: 시도한 상대 가져오기를 넘어 최상위 패키지\' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!