>백엔드 개발 >파이썬 튜토리얼 >Python에서 '비패키지의 상대 가져오기' 오류가 발생하는 이유는 무엇입니까?

Python에서 '비패키지의 상대 가져오기' 오류가 발생하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-23 16:31:10390검색

Why Does Python Throw a

Python의 상대 가져오기: "비패키지" 오류 이해

"비패키지에서 상대 가져오기 시도"라는 보편적인 문제 스크립트와 모듈의 차이점과 각각의 동작을 오해하는 데서 비롯됩니다. import.

스크립트 대 모듈

Python 파일이 직접 실행되면 최상위 스크립트 역할을 하며 "__main__"이라는 이름이 할당됩니다. 가져올 때 파일 이름은 점으로 구분된 패키지 이름과 파일 이름이 됩니다.

상대 가져오기 및 패키지

상대 가져오기는 모듈 이름을 활용하여 모듈을 찾습니다. 패키지 계층 내에서의 위치. 그러나 모듈 이름에 패키지 정보(예: "__main__")가 포함되어 있지 않으면 상대 가져오기는 실제 파일 위치에 관계없이 최상위 모듈인 것처럼 확인됩니다.

"비 패키지" 오류

패키지의 일부로 인식되지 않는 모듈 내에서 상대 가져오기를 시도할 때 오류가 발생합니다. 이는 모듈 이름에 점이 없어 패키지가 아닌 상태를 나타내는 경우에 발생할 수 있습니다.

해결책

오류를 해결하려면 다음 접근 방식을 고려하세요.

  • -m 스위치 사용:
    모듈을 실행하려면 모듈(스크립트 아님)로 "python -m package.subpackage1.moduleX" 구문을 사용합니다.
  • 스크립트 이동:
    원하는 패키지를 사용하는 별도의 스크립트를 만듭니다. 모듈을 선택하고 패키지 디렉터리 외부에서 해당 스크립트를 실행합니다. 이렇게 하면 모듈 이름에 "__main__"을 할당하는 것을 방지하고 상대 가져오기를 허용합니다.

추가 참고 사항:

  • 패키지 디렉터리에 액세스할 수 있는지 확인하세요. 모듈 검색 경로(sys.path)에 있습니다.
  • Python 2.6부터, 패키지 확인을 위한 모듈의 "이름"에는 packagename 속성이 모두 포함됩니다.

위 내용은 Python에서 '비패키지의 상대 가져오기' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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