Search Results for 'PEP328'

1 POSTS

  1. 2007.08.10 파이썬 상대 임포트와 절대 임포트
파이썬에서 모듈을 임포트할 때는 현재 패키지의 위치에 따라 상대적으로 모듈을 임포트합니다.

예를 들어 glux.draw.pixmap 모듈에서 import cairo하면 glux.draw.cairo, glux.cairo, cario 순으로 임포트를 시도합니다. 만약 glux.draw.cairo라는 모듈이 우연히 존재했다면 원래 의도했던 cairo 모듈을 임포트하는 게 쉽지 않은 일이 됩니다. sys.modules를 통해서 직접 모듈을 찾아오거나, glux.draw.cairo를 glux.draw.gluxcairo 같은 이름으로 변경해야 합니다. 그래서 파이썬 개발자들은 보통 패키지 내부 모듈이라도 표준 라이브러리와 겹치는 이름을 사용하길 꺼려합니다.

다행히 파이썬 2.5부터는 PEP328에 정의된 from __future__ import absolute_import를 사용하면 절대 임포트(absolute import)를 기본으로 만들 수 있습니다. 절대 임포트를 사용하면 위와 같은 상황에서 glux.draw.cairo가 아닌 cairo 모듈을 임포트할 수 있습니다. 이후에 나올 파이썬(파이썬 3000 포함)은 절대 임포트가 기본이 되고 import .cairo와 같은 형태로 점을 찍어서 상대 임포트를 한다고 하는군요.

까멜레오 개발하면서 상대 임포트에 따른 의도치 않은 모듈 임포트를 겪은지라 포스트를 남겨봤습니다.