기본 PYTHONPATH (sys.path)를 전체적으로 수정하는 방법은 무엇입니까?


33

Ubuntu (10.10) 시스템에는에 설치되는 Python 패키지가 있습니다 /usr/local/lib/python2.6/site-packages/. 기본 경로 (sys.path)에는 포함되어 있지 않습니다. 이 디렉토리를 경로에 어떻게 추가합니까?

$PYTHONPATH물론 환경 변수를 설정하는 것이 해결책이지만 더 우아한 방법을 찾고 있습니다. 예를 들어 easy_install설치된 패키지를 넣을 때 sys.path는 다음과 같습니다.

['', '/usr/local/lib/python2.6/dist-packages/keyring-0.5.1-py2.6.egg', 
'/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk',  
'/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', 
'/usr/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages', 
'/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/pymodules/python2.6', 
'/usr/lib/pymodules/python2.6/gtk-2.0']

따라서 경로는 분명히 파이썬 바이너리에 기본으로 설정되어 있지 않습니다.

위의 항목을 포함하는 단일 구성 파일이 있습니까? 또는 어떤 방법으로 수정할 수 있습니까?

답변:


27

사이트 모듈 문서수정 파이썬의 검색 경로는 당신이 찾고있는 것 같다.

내가 이해하는 한, 이러한 항목은 다음에 의해 추가 sys.path됩니다.

  • /usr/lib/python2.6/site.py
  • /usr/lib/python2.6/dist-packages/site.py
    (2.6 버전을 Python 버전으로 변경하십시오.)

변경하는 가장 쉬운 방법은을 /usr/local/lib/python2.6/dist-packages/site-packages.pth포함 하는 파일을 추가 하는 것 ../site-packages입니다.

또는 패키지를 사용하도록 지시 할 수 site.getsitepackages()있습니까?


1
고마워, 완벽하게 작동합니다 :) ( "../site-packages"를 포함하는 .pth 파일을 /usr/local/python2.6/dist-packages에 추가했습니다.)
Latanius

1
또한라는 모듈을 만들 수 있습니다 수입에 시도를 수정할 수 있다. sitecustomize.pysite.pysys.path
TestUser16418

5

/etc/profile.d/local_python.sh내용으로 불리는 새 파일을 만들 수 있습니다

PYTHONPATH="/usr/local/lib/python2.6/site-packages/":"${PYTHONPATH}"
export PYTHONPATH

PYTHONPATH시스템에 로그인 한 모든 사용자에 대한 변수를 설정합니다 .


7
이것은 실제로 보편적이지 않습니다. /etc/profile.d 메커니즘은 /etc/profile.d(bash/ksh/zsh)를 사용하는 쉘을 가진 사용자의 로그인 쉘에서만 작동합니다. csh 사용자는이 변경 사항을 볼 수 없습니다. 또한 cron / at 작업에서는 무시됩니다.
Rich Homolka

2
이것은 글로벌 환경 변수를 설정하는 좋은 방법입니다 (그러나 오늘 배운 다른 것). 그러나 포스트에서 언급했듯이 더 파이썬적인 방법을 찾고있었습니다 :)
Latanius

4

파이썬의 경로 수정에 대한 결과를 요약하고 싶습니다. 두 가지 방법이 있습니다.

  • .pth 파일
  • PYTHONPATH

모든 .pth의 (울부 짖는 참조) 기본 경로에서 발견 된 파일의 내용에 포함 얻을 것이다 sys.path. .pth 파일의 형식 은 간단합니다. 한 줄에 하나의 (폴더) 경로입니다. 놀랍게도 경로는 .pth 파일에 대해 절대적이거나 상대적 일 수 있습니다 .

기본 경로는 인터프리터가있는 <some-prefix>/lib/python<version>/site-packages위치 <some-prefix>이며 보통은 /usr/입니다.

PYTHONPATH운영 체제의 환경 변수입니다. 유닉스 시스템에서는을 기준으로 나열합니다 env. 이러한 변수의 전역 수정은 @ TestUser16418에서 언급 한 것처럼 폴더 내의 .sh 스크립트를 통해 수행됩니다 /etc/profile.d/.


2
"_"가없는 PYTHONPATH입니다.
heroxbd

1

예를 들어 파일 suds로 사용 가능한 모듈 을 가져 오려면 다음 을 수행 .egg하십시오.

egg_path = '/home/shahid/suds_2.4.egg'

sys.path.append(egg_path)

import suds
# ... rest of code
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.