>백엔드 개발 >파이썬 튜토리얼 >Python 스크립트 이름이 가져온 라이브러리와 충돌하면 어떻게 되나요?

Python 스크립트 이름이 가져온 라이브러리와 충돌하면 어떻게 되나요?

DDD
DDD원래의
2024-12-28 12:12:15437검색

What Happens When Your Python Script's Name Conflicts with an Imported Library?

스크립트와 동일한 이름을 가진 라이브러리 가져오기

예를 들어 request.py와 같이 가져온 라이브러리와 동일한 이름으로 스크립트 이름을 지정하는 경우, 다양한 수입 문제가 발생할 수 있습니다. 이러한 문제는 사용된 가져오기 접근 방식에 따라 AttributeErrors, ImportErrors 또는 NameErrors로 나타날 수 있습니다.

이는 스크립트 이름이 sys.path에 설치된 라이브러리를 숨기고 의도한 가져오기보다 로컬 스크립트에 우선순위를 부여하기 때문에 발생합니다.

증상

일반 가져오기

import requests

res = requests.get('http://www.google.ca')
print(res)
  • 오류: AttributeError: 'requests' 모듈에 'get' 속성이 없습니다.

특정 가져오기 ~에서 이름

from requests import get

res = get('http://www.google.ca')
print(res)
  • 오류: ImportError: 이름 'get'을 가져올 수 없습니다.

다음에서 모듈 가져오기 패키지

from requests.auth import AuthBase
  • 오류: ImportError: 'requests.auth'라는 모듈이 없습니다. 'requests'는 패키지가 아닙니다

Star Import

from requests import *

res = get('http://www.google.ca')
print(res)
  • 오류: NameError: name 'get' 아니다 정의됨

솔루션

이 문제를 해결하려면 스크립트 이름을 가져온 모듈과 충돌하지 않는 다른 이름으로 바꾸세요. 또한 캐시된 바이트 코드의 간섭을 방지하려면 생성된 요청.pyc 파일(있는 경우)을 삭제하세요.

추적 디버깅

이러한 오류가 발생하면 추적을 주의 깊게 검사하여 모듈 이름 충돌을 식별하세요. 스크립트 이름과 가져온 모듈 사이

위 내용은 Python 스크립트 이름이 가져온 라이브러리와 충돌하면 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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