> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 '비패키지에서 상대 가져오기 시도' 오류를 방지하려면 어떻게 해야 합니까?

Python에서 '비패키지에서 상대 가져오기 시도' 오류를 방지하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-12-22 04:40:14
원래의
628명이 탐색했습니다.

How Can I Avoid the

Python의 상대 가져오기

"비 패키지에서 상대 가져오기 시도" 오류를 방지하려면 Python의 상대 가져오기를 이해하는 것이 중요합니다.

스크립트 대 스크립트 모듈

Python 파일의 로딩 방법에서 중요한 차이점이 발생합니다. 스크립트로 직접 실행하면 이름이 __main__으로 설정됩니다. 반대로 가져온 경우 이름에는 패키지 정보가 포함됩니다.

명명 규칙

예를 들어 package/subpackage1/moduleX.py의 moduleX를 가져오면 해당 이름 package.subpackage1.moduleX가 됩니다. 그러나 직접 실행하면 이름은 __main__입니다.

상대 가져오기

상대 가져오기는 모듈 이름을 사용하여 패키지 계층 구조를 결정합니다. 점이 포함되지 않은 이름을 가진 모듈은 패키지의 일부로 표시되지 않습니다.

오류 원인

이름이 ''임을 나타내는 모듈에서 상대 가져오기를 시도할 때 오류가 발생합니다. 패키지에 포함되어 있지 않습니다(즉, 이름에 점이 없습니다). 여기에는 스크립트(main에 점이 없기 때문에)와 현재 디렉터리(Python이 검색 경로에 현재 디렉터리를 추가하는 위치)에서 직접 로드된 모듈이 포함됩니다.

솔루션

  • 모듈로 실행: python -m 사용 package.subpackage1.moduleX는 moduleX를 모듈로 실행하여 상대 가져오기를 허용합니다.
  • 다른 곳에 배치: moduleX를 사용하는 스크립트를 패키지 디렉터리 외부 위치로 이동하여 해당 위치에서 상대 가져오기를 활성화합니다. scripts.

참고

  • 패키지 디렉터리는 Python의 검색 경로에서 액세스할 수 있어야 합니다.
  • Python 2.6에서는 package 속성은 패키지 결정에도 영향을 미칩니다. 모듈.

위 내용은 Python에서 '비패키지에서 상대 가져오기 시도' 오류를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿