Python 的 sys.path 從哪裡取得初始值?
Python 的 sys.path 的初始化涉及一個複雜的過程,旨在智慧地確定導入模組最相關的路徑。以下是詳細的步驟:
1. Python 的位置確定
Python 透過解析任何符號連結並利用來自作業系統的資訊來確定其物理位置。該值被指派給 sys.executable.
2。 sys.exec_prefix 和 sys.prefix 的初始化
如果 pyvenv.cfg 檔案存在於包含 sys.executable 或上一級的目錄中,則檢查其內容。
-
Linux 和 Mac: 如果指定了 home 設定選項,它將取代 sys.executable 目錄作為 sys.prefix 的初始值。
-
Windows: PYTHONHOME 環境變數優先。如果設定,它會設定 sys.prefix 和 sys.exec_prefix。但是,如果 pyvenv.cfg 檔案包含 home 設置,它將覆蓋 PYTHONHOME 值。
否則,sys.exec_prefix 和 sys.prefix 是透過從 sys.executable 的位置向後遍歷或pyvenv.cfg 目錄。此過程中使用的特定標誌性檔案是 lib/python/dyn-load 和 lib/python/os.py.
3。 Initial Population of sys.path
- 正在執行的腳本的目錄包含在sys.path中。
- 加入PYTHONPATH環境變數的內容,除了在特定場景(例如,在 Windows 上使用 applocal=true)。
- zip 檔案路徑,Linux/Mac 上的 lib/python35.zip 或 os.path.join(os.dirname(sys.executable),新增了 Windows 上的「python.zip」)。
其他特定平台的迭代步驟:
-
Windows(非-applocal): 檢查與PythonPath 相關的登錄項目並將其新增至sys.path。
-
Windows(具有未知的 sys.前綴): 透過 sys 中的目錄進行搜尋如果可能的話,用於動態確定 sys.prefix 的地標檔案的 .path。
-
Mac 和 Linux: sys.exec_prefix 的值附加到 sys.path。
- Windows: PYTHONPATH 中編譯時定義的路徑是相對於 sys.prefix 新增的(如果動態找到)。
-
所有平台: Python 載入網站模組,它根據全面的搜尋過程動態地向 sys.path 添加更多路徑。
這種詳細的演算法確保 Python 精心結合系統定義的路徑和使用者提供的環境變量,以提供智慧且靈活的搜尋導入模組的路徑。
以上是Python 的 sys.path 如何取得其初始值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!