Python 如何初始化 sys.path 清單?

Patricia Arquette
發布: 2024-10-31 19:05:30
原創
260 人瀏覽過

How does Python initialize the sys.path list?

Python 的 sys.path 是從哪裡初始化的?

Python 的 sys.path,包含 Python 搜尋要導入的模組的目錄,經過複雜的初始化過程來確定其初始值。以下是其設定方式的詳細說明:

sys.executable 確定

  • Python 在檔案系統上找到其物理位置並將其用作sys 的值.executable.

sys.exec_prefix 和sys.prefix 初始化

  • Python 讀取與sys.executable 同一目錄下的pyvenv.cfg檔案或上一個目錄。
  • 如果檔案存在,它將提取以下資訊:

    • 在Windows 上:如果「applocal = true,」sys.prefix 設定為包含sys.executable 的目錄。否則,它使用“home = ”指令。
    • 在 Linux/Mac 上:Sys.exec_prefix 設定為「home = 」指示。除非 PYTHONHOME 環境變數存在,否則 Sys.prefix 也設定為該值。
  • 如果pyvenv.cfg 不存在或不包含必要的信息,Python 會嘗試確定sys.exec_prefix和sys.prefix 透過從sys.executable 向後走,尋找特定的標誌性文件。

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.cfg 中沒有「applocal = true」 .cfg,如果找不到 sys.prefix,則會新增「HK_LOCAL_MACHINESoftwarePythonPythonCorePytPath」的「核心內容」。
  8. 在 Windows 上且未設定 PYTHONPATH、未找到前綴且沒有註冊表項目前,它添加了 PYTHONPATH 的相對編譯時值。
  9. 它在 PYTHONPATH 編譯時巨集中合併了相對於動態找到的 sys.prefix 的路徑。
  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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!