2012-06-02 3 views
4

파이썬에서 상대 가져 오기를 만들려고합니다. 여기 python 상대 가져 오기

내 폴더 구조 :하지만 난 SO에 여기 검색 구문과 매번 이해할 수 없다, 나는 답을 얻을 수

Root 
    libraries 
     mylibrary 
     __init__ 
    projects 
     project 
      myproject.py 

난 '에 MyLibrary를 가져올 '상대 경로를 사용하여, 그것을 수행하는 구문은 무엇입니까?

+0

어디에서 mylibrary를 가져 오시겠습니까? 'myproject.py'라고 추측합니다. – Chris

+0

yes, from myproject.py –

답변

3

파이썬 경로에 디렉토리를 추가해야합니다.

import sys 
sys.path.append("/libraries") 

는하지만 그것을 필요하거나 이미의 sys.path에 표준 장소 중 하나에 설치 프로젝트의 폴더에 라이브러리를 넣어하거나 더 나은 것 같아요.

+0

죄송합니다. 방금 파이썬을 배우기 시작했으나 여러 프로젝트에서 '라이브러리'를 쉽게 사용하고 싶었습니다. 프로젝트를 만들 때마다 복사/붙여 넣기를하지 않아도되었습니다. PYTHONPATH에 그것들을 넣고 싶을 때, 내가 그들을 재배포 할 필요가 있었기 때문에 나는 C : \ python에 가서 거기에서 추출해야 할 것이기 때문에. –

+0

문제 없습니다. 이것은 완벽하게 훌륭합니다. 라이브러리를 직접 작성하고 수정해야하는 경우 이것이 더 나은 대안이 될 수 있다는 데 동의합니다. 그렇지 않으면, 나는 여전히 그들을 설치하는 것이 좋습니다. – camelNeck

3

단순한 import 문으로 수행 할 수 있다고 생각하지 않습니다. 내가 뭘 할 것은이 같은 sys.path에 라이브러리 폴더에 상대 경로를 추가하는 것입니다 : 이것은 당신이 projects/project 디렉토리에서 파이썬 인터프리터를 시작하는 경우에만 작동

import sys 
sys.path.append('../../') 
from libraries import mylibrary 

하는 것으로.

+0

그렇다면 복사/붙여 넣기없이 PYTHONPATH없이 여러 프로젝트에서 내 기능과 클래스를 재사용하려면 어떻게해야합니까? –

+2

그럼 당신의 유일한 옵션은 표준 장소에 그들을 설치하는 것입니다. distutils에 대해 읽어보십시오. 순수 Python 패키지에 사용하는 것은 아주 간단합니다. – silvado

3

상대적인 수입과 관련하여 불행한 혼란이 있습니다. 처음으로 파일을 배울 때 일반적으로 상대 파일/디렉토리 경로를 사용하여 가져올 개별 파일을 참조 할 수 있다고 생각합니다. (또는 최소한, 나는 그렇게 생각했다.) 사실, 그들은 단지 패키지 내에서 상대 경로를 사용하도록 허용한다.. 즉, 패키지 내의 특정 모듈은 동일한 패키지 내에서 다른 모듈을 가져와야 할 때 상대 가져 오기 구문을 사용할 수 있습니다.

예제에서 myproject.py는 mylibrary와 같은 패키지에 없으며 사실 패키지에 포함되어 있지 않으므로 myproject.py 내부에서 상대적인 가져 오기를 사용할 방법이 없습니다. 상대적 수입은 그 상황에 적용되지 않습니다.

원하는 효과를 얻기 위해 할 수있는 몇 가지 방법이 있습니다. 하나는 시스템 site-packages 디렉토리의 서브 디렉토리에 라이브러리를 넣는 것입니다. 또 다른 방법은 .PTH 파일을 시스템 site-package 디렉토리에두고 라이브러리가 저장된 장소에 대한 경로가 들어있는 .PTH 파일을 사용하는 것입니다. 또 다른 방법은 PYTHONPATH를 사용하여 라이브러리를 저장하는 디렉토리를 가리키는 것입니다.

+0

정보를 제공해 주셔서 감사합니다. 어쩌면 그게 내가 받고있는 오류에 대한 설명입니다. : / –