2011-09-26 2 views
1

내 모든 외부 라이브러리가 발견 소스 중 폴더를 제공합니다/폴더. 이 파이썬의 잘못된 사용인가 내가내가 lib 디렉토리에 나는 모든 라이브러리를 이동 한</li> </ul> <p>폴더 구조 다음</p> <ul> <li>LIB</li> <li>my_module을 필요로 한

my_module.my_dependency 

로 참조됩니다,

import sys 
sys.path.append('../lib/') 
import my_dependency 

을 그럼 난이 종속성을 사용할 필요가있을 때 : 내 module/__init__.py에서

, 나는 내가 할 것이라고 생각 수입?

참고 : 종속성은 pip/easy_install 및 일부 C++ 항목을 통해 사용할 수없는 일부 타사 라이브러리로 구성됩니다.

답변

1

sys.path.append('../lib/')는 현재 작업 디렉토리 또는 경우하지 않을 수도 스크립트의 디렉토리에 있다고 가정합니다.

는 작업 디렉토리에 의존하지 않는 버전은

입니다 :

import sys, os 
sys.path.append(os.path.join(os.path.split(os.path.split(os.path.abspath(sys.argv[0]))[0])[0], "lib")) 
import my_dependency 

일반 언어로 위의 스크립트의 전체 경로를 소요, ​​마지막 두 개의 구성 요소 오프 갈비 (스크립트 디렉토리 및 스크립트 파일 이름) lib을 추가합니다.

0

사용하는 라이브러리가 타사 모듈 인 경우 (특히 인기가있는 라이브러리) 이름 공간이 매우 유사하여 불일치가 발생하기 쉽습니다. 결국 bar으로 참조되고 때로는 foo.bar으로 참조되는 코드로 끝납니다. 그러한 코드베이스를 유지하는 것은 그것들에 접두사를 붙이기를 기대하는 어떤 이득도 가치가 없습니다.

제 3 자 코드를 자신의 저장소에 보관하는 경우 easy_installpip과 같은 유틸리티에 공급할 수있는 requirements.txt 파일로 대체하는 것이 좋습니다. 이 두 도구는 모두 홈 디렉토리에 설치되는 --user 스위치를 지원합니다 (시스템 작업에는 영향을주지 않습니다).

pip install -r requirements.txt --user 
+0

의존성은 대부분 easy_install/pip에 없습니다. –

+0

공유 파이썬 라이브러리의 모든 변경에 대해'pip install '을해야하는 개발 과정은 불편할 것입니다. –

+0

@MaximYegorushkin - 비 인기있는 종속성 (devs의 컴퓨터에 아직 설치되지 않은)을 많이 모으는 경우에만 필요합니다. – patrys