2016-10-24 3 views
5

가끔 모듈 이름 충돌이 타사 패키지의 응용 프로그램과 내부 파일간에 발생합니다. 예를 들어 현재 폴더에 이라는 파일이 있으면 자체 profile.py 대신 가져 오기를 시도 할 때 jupyter notebook이 충돌 할 수 있습니다. 패키지 사용자의 관점에서이 문제를 피하는 좋은 방법은 무엇입니까? (또는 패키지 개발자가 어떻게 든 피해야하는 것입니까?)모듈 이름 충돌 처리

참고 : 응용 프로그램과 기본 제공 이름 (예 : time.py 또는 socket.py) 간의 충돌로 인해 비슷한 문제가 발생하지만 적어도 상대적으로 쉽습니다. 표준 라이브러리 모듈 및 기타 내장 객체의 이름을 기억하십시오.

답변

2

현재 디렉토리는 응용 프로그램의 기본 스크립트가 들어있는 디렉토리입니다. 이 디렉토리에서 이름 충돌을 피하려면 모듈을 모듈에 두지 마십시오.

대신 네임 스페이스를 사용하십시오. 기본 스크립트의 디렉토리에 고유 한 이름의 패키지를 작성한 다음 모든 것을 가져옵니다. 주요 스크립트는 매우 간단,이 지나지 포함되어야합니다 : 패키지 내부

if __name__ == '__main__': 

    from mypackage import myapp 

    myapp.run() 

모든 모듈은 또한 패키지 내에서 다른 모듈에 액세스 할 수 from 수입을 사용해야합니다. 예를 들어 myapp.py에는 다음이 포함될 수 있습니다.

from mypackage import profile