복붙노트

[PYTHON] 절대 수입을 사용하는 경우

PYTHON

절대 수입을 사용하는 경우

나는 때때로 패키지 사이의 이름 충돌로 실행되는 오래된 파이썬 코드를 변경하고 있습니다. 절대 수입을 사용해야하는시기와 같은 수준의 모듈을 이름으로 만 가져 오는 것이 적절한 지에 대한 질문이 있습니다.

/package/
/package/__init__.py
/package/subA
/package/subA/__init__.py
/package/subA/moduleA.py
/package/subA/moduleB.py
/package/subB
/package/subB/__init__.py
/package/subB/moduleA.py
/package/subB/moduleB.py

패키지 내의 모든 import 문은 다음과 같아야합니다.

import package.subX.moduleX

또는

from package.subX import moduleX

하위 패키지 __init__.py 파일은 어떻습니까? 간단히 말하면 틀린가?

import moduleA
import moduleB

또는 /package/subA/moduleA.py에서 단순히 다음을 넣는 것이 잘못 될 수 있습니다.

import moduleB

해결법

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

    1.상대적 수입은 오랫동안 기본 행동 이었지만 매우 나쁜 아이디어로 밝혀졌습니다. 이 사이트에서 누군가가 내장 모듈 다음에 파일의 이름을 지정하고 이상한 오류 메시지로 응용 프로그램을 부 quite던 질문을 찾을 수 있습니다.

    상대적 수입은 오랫동안 기본 행동 이었지만 매우 나쁜 아이디어로 밝혀졌습니다. 이 사이트에서 누군가가 내장 모듈 다음에 파일의 이름을 지정하고 이상한 오류 메시지로 응용 프로그램을 부 quite던 질문을 찾을 수 있습니다.

    패키지를 포함하여 어디에서나 프로젝트를 참조하여 절대적인 수입을하는 것이 항상 좋은 이유입니다.

    즉, 다음 스타일을 사용하십시오.

    import myproject.mypackage
    from myproject.mypackage.myfile import MyClass
    

    PEP8의 견적 :

  2. from https://stackoverflow.com/questions/5811463/when-to-use-absolute-imports by cc-by-sa and MIT license