2012-03-07 3 views
0

프로젝트에 너무 많은 디렉토리가 있습니다. 각각 .py 파일을 다른 디렉토리에 올바르게 가져 오길 원합니다. 내가 다른 디렉토리 'variables을 가져올 때 파이썬 프로젝트에서 시스템의 경로 변수를 초기화하는 방법

나는 난 그냥이 너무 자세한 될 수있다 file.but 가져,이

PREFIX = normpath(dirname(dirname(dirname(abspath(__file__))))) 
if PREFIX not in sys.path: 
    sys.path = [PREFIX] + sys.path 

했습니다.

더 나은 방법으로 프로젝트의 경로를 글로벌 시스템의 경로로 내보내는 방법을 제외하고는 더 좋은 방법으로 해결하는 더 좋은 방법이 있습니까?

답변

0

import statement은 - 디렉토리에 배열 된 파일 (모듈)을 __init__.py 마커로 지원합니다.

절대 모듈 참조가 필요하지 않도록 상대 패키지 계층 구조 (선행 점 사용)가 지원됩니다 ( ).

을 가져올 모듈을 지정할 때 모듈의 절대 이름을 지정하지 않아도됩니다. 모듈이나 패키지가 다른 패키지에 포함되어 있으면 패키지 이름을 언급하지 않고 동일한 최상위 패키지 내에서 상대적으로 가져올 수 있습니다. 지정한 모듈 또는 패키지에서 선행 점을 사용하면 정확한 이름을 지정하지 않고 현재 패키지 계층을 트래버스하는 최대 높이를 지정할 수 있습니다.. 첫 번째 점은 가져 오기를 수행하는 모듈이있는 현재 패키지를 의미합니다. 두 개의 점은 하나의 패키지 레벨을 의미합니다. 세 개의 점은 두 단계 위로 올라갑니다. 따라서, pkg 패키지의 모듈에서 from . import mod을 실행하면 pkg.mod를 가져옵니다. pkg.subpkg1에서 from ..subpkg2 import mod을 실행하면 pkg.subpkg2.mod를 가져옵니다. 상대적 가져 오기에 대한 사양은 PEP 328에 포함됩니다.

하면 서브 패키지와 프로젝트를 준비하고 (동일 레벨의 다른 서브 - 패키지) subpkg2mod에서 변수를 사용 from ..subpkg2 import mod 유사한 상대적인 수입을 사용할 수있다.

관련 문제