2012-05-21 5 views
18

일부 패키지를 타사 site-packages 디렉토리 (표준 시스템 위치 제외)에 설치하고 싶습니다. 이 .pth 파일을 존중하도록 설정하는 방법이 있습니까?보조 사이트 패키지 디렉토리 만들기 (및 그 안에있는 .pth 파일에서 패키지로드)


배경 : OS X, virtualenv 및 homebrew를 사용하고 있습니다. virtualenv에 pip를 통해 멋지게 설치하지 않는 몇 가지 패키지 (특히 wxPython은 필자의 경우)가 있습니다. 이 경우, 대신에 작동하는 홈 브루 패키지가 있습니다. 자작 나무는 /usr/local/lib/python2.7에 세 번째 사이트 패키지 폴더를 만듭니다. 이 폴더를 가리키고 모든 항목의 유지 관리를 brew의 통제하에두기 만하면됩니다. 그러나 이것이 불가능한 것처럼 보입니다.

나는이 문제에 관심있는 유일한 사람이 아닙니다. 나는 일반적인 'pth 파일이 작동하지 않는'좋은 수의 질문을하고 온라인을 통해 우연히 발견 한이 게시물은이 문제와 관련이 있습니다. 좋은 해결책이 있습니까?

답변

17

site 모듈을 살펴보십시오. 그것은 당신이 원하는 것을 해야하는 기능 addsitedir을 제공합니다.

sitecustomize.py 또는 usercustomize.py라는 이름의 파일을 만들고 다음 내용을 현재 PYTHONPATH 디렉토리 (또는 sys.path에 끝나는 디렉토리)에 배치하는 것입니다 이것을 사용하는 가장 쉬운 방법 :

import site 
site.addsitedir('/usr/local/lib/python2.7') 

파이썬이 시작될 때 sitecustomize을 가져온 다음 usercustomize을 가져 오려고 시도합니다. 따라서 이것이 작동합니다. 사이트 문서에서 이러한 경로 조작 후

시도가 임의의 사이트 별 사용자 정의를 수행 할 수 sitecustomize라는 이름의 모듈을 수입한다. 일반적으로 시스템 관리자가 site-packages 디렉토리에 만듭니다. 이 가져 오기가 ImportError 예외로 실패하면 자동으로 무시됩니다.

그런 다음 모듈을 가져 오려고 시도합니다.이 모듈은 ENABLE_USER_SITE이 true 인 경우 임의의 사용자 별 사용자 지정을 수행 할 수 있습니다. 이 파일은 -s에 의해 사용 중지되지 않은 한 sys.path의 일부인 사용자 site-packages 디렉토리 (아래 참조)에서 작성됩니다. ImportError은 자동으로 무시됩니다.

+0

이 sitecustomize.py를 수행가 내부 .pth 파일을 배치하거나 시작시 자동으로 실행 얻을 usercustomize.py 수 있습니까? 편집 : [예, 가능합니다] (http://docs.python.org/library/site.html). 감사! –

+0

@MattB. 예. 일부 추가 정보로 내 대답을 편집했습니다. 설명서는 내가 대답 한 사이트 모듈 페이지의 맨 위에 있습니다. –

+1

나는 작업 사이트가 어떻게 작동하는지 완전히 이해하지 못한다 : (1) addsitedir ('/ usr/local'), 즉 대체 접두사 (그러나 그것은 나를 위해 작동하지 않는다), 또는 (2) addsitedir ('/ usr/local/lib/python2.7/site-packages')는 추가 할 경로를 추가하고 두 번째 경우에는 PYTHONPATH에 추가하지 않는 이유는 무엇입니까? –

1

는 특히 사용자가 시스템 전체 site-packages에는 관리자 액세스 할 수 없습니다 상황에 대처하기 위해, 사용자 별 site-packages 디렉토리의 생성을 해결 PEP 370 있었다.

예를 들어 Unix (Mac OS 포함)에서 Python 3을 사용한다고 가정합니다.6, 하나는 다음 디렉토리를 생성하고

~/.local/lib/python3.6/site-packages