복붙노트

[PYTHON] 내장 모듈과 이름이 같은 모듈을 가져 오려고하면 가져 오기 오류가 발생합니다.

PYTHON

내장 모듈과 이름이 같은 모듈을 가져 오려고하면 가져 오기 오류가 발생합니다.

내장 모듈과 충돌하는 모듈이 있습니다. 예를 들어, myapp / email.py에 정의 된 myapp.email 모듈.

내 코드에서 myapp.email을 문제없이 참조 할 수 있습니다. 그러나 전자 메일 모듈에서 내장 전자 메일 모듈을 참조해야합니다.

# myapp/email.py
from email import message_from_string

myapp.email에는 message_from_string 메소드가 없으므로 자체적으로 만 찾으면되므로 ImportError가 발생합니다. 전자 메일 가져 오기에서 email.message_from_string을 시도 할 때 동일한 문제가 발생합니다.

파이썬에서이 작업을 수행 할 기본 지원이 있습니까? 아니면 "전자 메일"모듈의 이름을 좀 더 구체적으로 변경해야합니까?

해결법

  1. ==============================

    1.이 바로 그 문제를 다루는 절대 및 상대 수입에 대해 읽고 싶을 것입니다. 용도:

    이 바로 그 문제를 다루는 절대 및 상대 수입에 대해 읽고 싶을 것입니다. 용도:

    from __future__ import absolute_import
    

    이것을 사용하면 꾸밈없는 패키지 이름은 항상 최상위 패키지를 참조합니다. 그런 다음 자신의 패키지에 액세스하기 위해 상대 import (.email import ...)를 사용해야합니다.

    참고 : 위의 ... 라인은 여러분이 사용하고있는 import ... 라인 위의 2.x Python .py 파일에 넣어야합니다. 파이썬 3.x에서는 이것이 기본 동작이므로 더 이상 필요하지 않습니다.

  2. from https://stackoverflow.com/questions/1224741/trying-to-import-module-with-the-same-name-as-a-built-in-module-causes-an-import by cc-by-sa and MIT license