>  기사  >  백엔드 개발  >  Python은 sys.path 목록을 어떻게 초기화합니까?

Python은 sys.path 목록을 어떻게 초기화합니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 19:05:30262검색

How does Python initialize the sys.path list?

Python의 sys.path는 어디에서 초기화됩니까?

Python이 가져올 모듈을 검색하는 디렉터리가 포함된 Python의 sys.path, 초기 값을 결정하기 위해 복잡한 초기화 프로세스를 거칩니다. 설정 방법은 다음과 같습니다.

sys.executable 결정

  • Python은 파일 시스템에서 물리적 위치를 찾아 이를 sys 값으로 사용합니다. .executable.

sys.exec_prefix 및 sys.prefix 초기화

  • Python은 sys.executable과 동일한 디렉터리에 있는 pyvenv.cfg 파일을 읽습니다. 또는 한 디렉터리 위로.
  • 파일이 존재하는 경우 다음 정보를 추출합니다.

    • Windows의 경우: "applocal = true"인 경우 sys.prefix가 다음으로 설정됩니다. sys.executable이 포함된 디렉터리입니다. 그렇지 않으면 "home = "를 사용합니다. directive.
    • Linux/Mac: Sys.exec_prefix가 "home = "로 설정됩니다. 지령. PYTHONHOME 환경 변수가 존재하지 않는 한 Sys.prefix도 이 값으로 설정됩니다.
  • pyvenv.cfg가 존재하지 않거나 필요한 정보가 포함되어 있지 않으면 Python은 sys.exec_prefix를 확인하려고 시도합니다. sys.executable에서 뒤로 이동하여 특정 랜드마크 파일을 찾아 sys.prefix를 찾습니다.

sys.path 초기화

  1. Python은 실행 중인 스크립트의 디렉터리를 sys.path에 추가합니다.
  2. Linux/Mac에서는 설정된 경우 PYTHONPATH 환경 변수를 추가합니다.
  3. 다음을 포함합니다. zip 파일 경로(/lib/python35.zip 또는 path/to/python.zip).
  4. Windows에서 pyvenv.cfg에 "applocal = true"가 없으면 "HK_CURRENT_USERSoftwarePythonPythonCore<에서 하위 키를 추가합니다. ;DLLVersion>PythonPath."
  5. Windows에서 pyvenv.cfg에 "applocal = true"가 없고 sys.prefix가 없으면 "HK_CURRENT_USERSoftwarePythonPythonCorePythonPath의 "핵심 내용"을 추가합니다. "
  6. Windows에서 pyvenv.cfg에 "applocal = true"가 없으면 "HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath"의 하위 키를 추가합니다.
  7. Windows에서 pyvenv에 "applocal = true"가 없으면 .cfg, 그리고 sys.prefix가 발견되지 않은 경우 "HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath"의 "핵심 내용"을 추가합니다.
  8. Windows에서 PYTHONPATH가 설정되지 않고 접두사가 없으며 레지스트리 키가 없습니다. 현재는 PYTHONPATH의 상대 컴파일 시간 값을 추가합니다.
  9. 동적으로 발견된 sys.prefix를 기준으로 PYTHONPATH 컴파일 시간 매크로의 경로를 통합합니다.
  10. Linux/Mac의 경우, sys.exec_prefix를 추가합니다. Windows에서는 sys.prefix를 검색하는 데 사용되는 디렉터리를 추가합니다.
  11. Windows에서는 pyvenv.cfg에 "applocal = true"가 없으면 sys.path에서 랜드마크 파일을 찾아 sys.prefix를 찾으려고 시도합니다. . 실패하면 sys.prefix를 비워 둡니다.

사이트 모듈에 의한 추가 수정

  • 사이트 모듈은 다음을 추가하여 sys.path를 추가로 수정합니다. sys.prefix, sys.exec_prefix 및 플랫폼별 경로를 기반으로 하는 디렉터리.
  • 이러한 새 경로에서 구성 파일을 검사하여 잠재적으로 더 많은 경로를 추가합니다.

위 내용은 Python은 sys.path 목록을 어떻게 초기화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.