2014-09-16 3 views
1

이전에 대답 해본 적이 있지만 검색 프로세스를 정확하게 설명하는 스레드를 찾을 수 없었습니다. 내가 틀렸다면 사과한다. I파이썬의 경로 검색

정확히은 모듈 검색을 위해 검색 프로세스 인 파이썬이 무엇입니까? 어떤 경로은 어떤 순서로 간주됩니까? (예를 들어, sys.pathPYTHONPATH 대 정의는 site-packages 등)

나는 코멘트, 다음에서 제공 the link의 정보 아래에 복사, 그러나 나는 다음과 같은 질문이 있습니다

  • installation-dependent 기본이 정확히 무엇입니까?
  • 가상 환경이 virtualenv 또는 conda 인 경우 어떻게됩니까?

모듈 이름이 스팸 메일을 가져 오면, 인터프리터 첫번째 검색 해당 이름을 가진 내장 모듈 . 찾지 못하면 변수 sys.path로 지정된 디렉토리 목록에서 spam.py라는 파일을 검색합니다. sys.path는 다음 위치에서 초기화됩니다.

  • 입력 스크립트 (또는 현재 디렉토리)가 포함 된 디렉토리.
  • PYTHONPATH (쉘 변수 PATH과 동일한 구문의 디렉토리 이름 목록).
  • 설치 별 기본값.

초기화 후 Python 프로그램은 sys.path을 수정할 수 있습니다. 실행중인 스크립트가 들어있는 디렉토리는 검색 경로의 시작 부분에 표준 라이브러리 경로보다 앞에 배치됩니다 ( ). 즉, 이라는 의미이며 해당 디렉토리의 스크립트는 라이브러리 디렉토리에 동일한 이름 인 의 모듈 대신로드됩니다. 대체가 아니라면 오류입니다. 자세한 내용은 표준 모듈을 참조하십시오 ( ).

+0

[이 질문] (http://stackoverflow.com/questions/9586630/python-paths-and-import-order)에서 [이 링크] (https://docs.python.org/2)를 발견했습니다. /tutorial/modules.html#the-module-search-path)를 참조하십시오. – Celeo

+0

고마워요 @Celeo OP를 업데이트했습니다. – Josh

+1

몇 년 전 pycon에서 가져 오기가 어떻게 작동하는지 [좋은 비디오] (http://pyvideo.org/video/1707/how-import-works)가 있습니다. – Silfheed

답변

1

찾고있는 답변은 다음과 같습니다. 섹션 6.1.2의 https://docs.python.org/2/tutorial/modules.html.

사이트에 따르면 그것은 당신이 찾고있는 문서가 https://docs.python.org/2/library/site.html을 믿고

the directory containing the input script (or the current directory). 
PYTHONPATH (a list of directory names, with the same syntax as the shell variable PATH). 
the installation-dependent default. 
+0

감사합니다. @Donkyhotay +1. 그 정보와 질문에 대한 답변을 바탕으로 OP를 업데이트했습니다. – Josh

1

입니다. 두 가지 다른 점은 .pth 파일과 사용자 사이트 디렉토리 (~/.local/lib/python2.7)입니다.

virtualenv의 작동 방식을 모르겠습니다. Conda 환경은 독립적 인 Python 설치로 생각해야하므로 독립적 인 lib/python2.7lib/python2.7/site-packages 디렉토리가 있습니다. 그러나 PYTHONPATH, PYTHONHOME~/.local/lib/python2.7과 같은 항목은 전역이므로 모든 conda 환경에서 이러한 환경을 사용합니다. (내가하는 일을 실제로 알지 못하는 한 개인적으로 권장하지 않습니다.)