Python

sys.path 모듈 검색 경로 초기화

파이썬이 시작될 때 모듈 검색 경로가 초기화됩니다. 이 모듈 검색 경로는 :data:`sys.path`에서 접근할 수 있습니다.

모듈 검색 경로의 첫 번째 항목은 입력 스크립트가 있는 디렉터리입니다. 해당 디렉터리가 없는 경우, 첫 번째 항목은 현재 디렉터리로, 이는 대화형 셸 실행, -c 명령어, 또는 -m 모듈의 경우에 해당합니다.

PYTHONPATH 환경 변수는 디렉터리를 검색 경로에 추가하는 데 자주 사용됩니다. 이 환경 변수가 발견되면 해당 내용은 모듈 검색 경로에 추가됩니다.

참고

PYTHONPATH`는 모든 설치된 파이썬 버전/환경에 영향을 미칩니다. 프로필이나 전역 환경 변수에 설정을 지정하는 것은 주의해야 합니다. :mod:`site 모듈은 아래에서 언급한 것처럼 더 미묘한 기술을 제공합니다.

The next items added are the directories containing standard Python modules as well as any extension modules that these modules depend on. Extension modules are .pyd files on Windows and .so files on other platforms. The directory with the platform-independent Python modules is called prefix. The directory with the extension modules is called exec_prefix.

PYTHONHOME 환경 변수는 prefixexec_prefix 위치를 설정하는 데 사용될 수 있습니다. 그렇지 않으면, 이 디렉터리들은 파이썬 실행 파일을 시작점으로 사용하여 다양한 ‘랜드마크’ 파일과 디렉터리를 찾아 발견됩니다. 모든 심볼릭 링크는 따라가므로 실제 파이썬 실행 파일 위치가 검색 시작점으로 사용됩니다. 파이썬 실행 파일 위치는 home 이라고 합니다.

home 이 결정되면, prefix 디렉터리는 pythonmajorversionminorversion.zip (python311.zip)을 찾음으로써 먼저 발견됩니다. Windows에서는 zip 아카이브를 home 에서 검색하고 Unix에서는 아카이브가 lib 에 있을 것으로 예상합니다. 예상되는 zip 아카이브 위치는 아카이브가 존재하지 않아도 모듈 검색 경로에 추가됩니다. 아카이브를 찾지 못한 경우, Windows의 파이썬은 Lib\os.py 를 찾아 prefix 검색을 계속합니다. Unix의 파이썬은 lib/pythonmajorversion.minorversion/os.py (lib/python3.11/os.py)을 찾습니다. Windows에서 prefixexec_prefix 는 동일하지만, 다른 플랫폼에서는 lib/pythonmajorversion.minorversion/lib-dynload (lib/python3.11/lib-dynload)을 검색하여 exec_prefix 의 닻으로 사용합니다. 일부 플랫폼에서는 liblib64 일 수 있거나 다른 값일 수 있으니 sys.platlibdirPYTHONPLATLIBDIR 를 참조하십시오.

발견되면, prefixexec_prefix 는 각각 sys.base_prefixsys.base_exec_prefix 에서 사용할 수 있습니다.

PYTHONHOME 이 설정되지 않았고, 주 실행 파일 근처나 상위 디렉터리에서 pyvenv.cfg 파일이 발견되면, sys.prefixsys.exec_prefixpyvenv.cfg 가 포함된 디렉터리로 설정됩니다. 그렇지 않은 경우, 각각 sys.base_prefixsys.base_exec_prefix 와 동일한 값으로 설정됩니다. 이는 가상 환경 에서 사용됩니다.

마지막으로, site 모듈이 처리되고 site-packages 디렉터리가 모듈 검색 경로에 추가됩니다. PYTHONUSERBASE 환경 변수는 사용자 site-packages를 어디서 검색할지 제어하며, PYTHONNOUSERSITE 환경 변수는 사용자 site-packages 검색 자체를 방지합니다. 검색 경로를 사용자 정의하는 일반적인 방법은 site 모듈 설명에 설명된 대로 sitecustomize 또는 usercustomize 모듈을 생성하는 것입니다.

참고

명령줄 옵션 -E, -P, -I, -S 및 :option:`-s`는 경로 계산에 추가적인 영향을 미치므로, 자세한 내용은 해당 문서를 참조하십시오.

버전 3.14에서 변경: sys.prefix`와 :data:`sys.exec_prefix`는 경로 초기화 중에 ``pyvenv.cfg` 디렉터리로 설정됩니다. 이전에는 site`에서 처리했기 때문에 :option:-S`의 영향을 받습니다.

가상 환경

가상 환경은 그 접두사에 pyvenv.cfg 파일을 배치하여, :data:`sys.prefix`와 :data:`sys.exec_prefix`가 기본 설치가 아닌 해당 가상 환경을 가리키게 합니다.

기본 설치의 prefixexec_prefix 값은 sys.base_prefix 및 :data:`sys.base_exec_prefix`에서 확인할 수 있습니다.

가상 환경을 식별하는 마커로 사용될 뿐만 아니라, pyvenv.cfgsite 초기화를 구성하는 데에도 사용될 수 있습니다. sitevirtual environments documentation 를 참조하십시오.

참고

PYTHONHOME`은 ``pyvenv.cfg` 감지 기능을 재정의합니다.

참고

“가상 환경”은 구현될 수 있는 다른 방법이 있습니다. 이 문서는 venv`와 같이 많은 가상 환경 구현체들이 따르는 ``pyvenv.cfg` 메커니즘 기반의 구현을 참조합니다.

_pth 파일

sys.path`를 완전히 재정의하려면, 공유 라이브러리 또는 실행 파일과 동일한 이름의 `._pth`` 파일을 만드십시오(python._pth 또는 python311._pth). 공유 라이브러리 경로는 Windows에서는 항상 알려져 있지만, 다른 플랫폼에서는 사용할 수 없을 수 있습니다. ._pth 파일에 :data:`sys.path`에 추가할 경로마다 한 줄을 지정합니다. 공유 라이브러리 이름을 기반으로 하는 파일은 실행 파일을 기반으로 하는 파일을 재정의하며, 이를 통해 원하는 경우 런타임을 로드하는 모든 프로그램에 대해 경로를 제한할 수 있습니다.

파일이 존재할 경우, 모든 레지스트리 및 환경 변수는 무시되며, 격리 모드가 활성화되고, 파일의 한 줄에 import site``가 지정되지 않는 :mod:`site`는 임포트되지 않습니다. 경로와 ``#``로 시작하는 줄은 무시됩니다. 경로는 절대 경로이거나 파일 위치를 기준으로 하는 상대 경로일 있습니다. ``site 외의 임포트 문은 허용되지 않으며, 임의의 코드를 지정할 수 없습니다.

참고로, .pth 파일(선행 밑줄 없음)은 import site 가 지정된 경우 site 모듈에 의해 정상적으로 처리됩니다.

내장 Python

만약 Python이 다른 응용 프로그램 내에 임베드되어 Py_InitializeFromConfig() 를 사용하고 PyConfig 구조를 사용하여 Python을 초기화할 수 있는 경우, 해당 경로는 Python Path Configuration 에서 상세 내용을 설명합니다.

더 보기

  • 자세한 Windows 관련 내용은 :ref:`windows_finding_modules`를 참조하십시오.

  • Unix 관련 상세 내용은 :ref:`using-on-unix`를 참조하십시오.

분실물 보관소