2011-09-02 3 views
1

저는 많은 외부 파일로 설치하는 python 패키지를 만들었습니다. 패키지와 함께 설치되는 스크립트에서 해당 파일을 읽을 수 있어야합니다. 난 내 스크립트 내부 __file__를 사용할 수있는 것을 볼 수 있으며,이 같은 반환포함 된 스크립트에서 파이썬 패키지와 함께 설치된 추가 파일을 어떻게 찾을 수 있습니까?

/Library/Python/2.6/site-packages/M5-0.3.0-py2.6.egg/EGG-INFO/scripts/.. 

을하고 그래서 파일을합니다 (.egg 디렉토리의 최상위 레벨) 설치된 곳으로 이동할 수 있습니다,하지만 난 ' 내 패키지가 어디에 설치되어 있는지를 결정하는 더 "표준적인"방법을 찾고 있습니다.

답변

1

않습니다 os.getcwd() 어디서나 가까이 있습니다? ('현재 작업 디렉토리'를 반환합니다. 보통은 주 스크립트를 가져 왔습니다.)

__file__을 사용하면 무엇이 잘못 될까요? 더 높은 수준의 기능을 찾고 있다면 아마도 비슷한 기술을 사용하게 될 것입니다.

import os 
d = os.path.dirname(__file__[:__file__.rindex(os.extsep+'egg')]) 

은 디렉토리를 제공합니다. 당신은 pkgutil.get_data 기능 같은 것을 할 수 있습니다

os.startfile(d) 
2

로에 '이동'.

패키지가 디스크에 표준 파이썬 패키지 디렉토리 구조로 존재하는 경우 리소스가 __file__ 인 경우 리소스를 읽습니다. 압축 된 에그의 리소스도 읽을 것이라고 생각합니다. 나 자신).