URLhttps://learnscript.net/zh-hant/python-reference/import-system/module-search-path/override-module-search-path-using-pth-file/
    複製連結移至說明  範例

    如何使用 _pth 檔案覆寫 Python 模組搜尋路徑

    閱讀 4:17·字數 1287·發佈 
    Youtube 頻道
    訂閱 375

    _pth 檔案

    _pth檔案和放置於 Python 第三方套件的pth檔案類似,可以用來設定模組搜尋路徑,檔案中的每一行,可對應一條采用絕對路徑或相對路徑的目錄資訊。

    設定搜尋路徑

    如果你想了解一些pth檔案的基本用法,可以檢視使用 pth 檔案設定 Python 模組搜尋路徑一段。

    _pth 檔案將覆寫 Python 模組搜尋路徑

    pth檔案不同,_pth檔案將覆寫整個模組搜尋路徑,如果你建立了_pth檔案,卻沒有在檔案中指定任何目錄,那麽 Python 可能無法正常啟動,因為缺少有效的搜尋路徑,會使 Python 無法找到執行所需的模組。

    要讓 Python 正確執行,至少應在_pth檔案中指定標準程式庫和擴充程式庫的目錄。

    _pth 檔案中列出的目錄不需要真實存在

    pth檔案不同,當_pth檔案包含不存在的目錄時,他們依然會被新增至模組搜尋路徑。

    模組搜尋路徑

    要了解 Python 標準/擴充程式庫的位置,你可以檢視Python 標準/擴充程式庫目錄一段。

    這裏是一個可能適用於 Windows 的_pth檔案,他指出了標準程式庫zip檔案的路徑,以及標準/擴充程式庫的目錄。

    python._pth
    # 標準程式庫 zip 檔案路徑
    python312.zip
    # 標準/擴充程式庫目錄
    .
    # …

    在 _pth 檔案中新增 Python 第三方套件目錄

    在編寫程式碼方面,_pth檔案受到了更多的約束,僅限於使用import site,該陳述式的效果是將第三方套件目錄新增至模組搜尋路徑,並使得這些目錄中pth檔案可以被正常處理。

    當然,以上對於第三方套件目錄和pth檔案的操作,是 Python 常規啟動流程的一部分(當_pth檔案不存在時)。

    在 _pth 檔案中手動指定第三方套件目錄和使用 import site 之間的區別

    雖然,你可以在_pth檔案中手動指定第三方套件目錄,但那會使pth檔案失效,只有匯入site模組後,pth檔案才能被識別。

    python._pth
    # …
    # 新增第三方套件目錄,並使目錄中的 pth 檔案可以被正常處理
    import site

    _pth 檔案的名稱和位置

    不像pth檔案可以隨意命名,_pth檔案的名稱需要和 Python 可執行檔案的名稱保持一致,_pth檔案存放的位置,應該位於 Python 可執行檔案所在的目錄。

    在 Windows 中為 Python 標準程式庫的 zip 檔案建立 _pth 檔案

    在 Windows 系統中,_pth檔案的名稱還可以與標準程式庫的zip檔案的名稱一致,但這樣的做法在其他作業系統中可能無效,如果你采用兩種命名方式建立了兩個_pth檔案,那麽與 Python 可執行檔案同名的_pth檔案將失效。

    假設 Windows 中 Python 可執行檔案為python.exe,標準程式庫zip檔案為python312.zip,那麽_pth檔案就可以命名為python._pthpython312._pth

    在 UNIX/Linux/macOS 中為多個 Python 可執行檔案建立 _pth 檔案

    如果是 UNIX/Linux/macOS,則 Python 的可執行檔案可能有多個。假設bin目錄中同時存在python3python3.12,那麽你可以在該目錄新增兩個_pth檔案,python3._pthpython3.12._pth,他們將分別對應在命令列輸入python3python3.12的情況。

    _pth 檔案中的相對路徑

    _pth檔案中的相對路徑,是相對於_pth檔案所在的目錄,而非 Python 的目前工作目錄。在被新增至sys.path時,他們會轉換為等價的絕對路徑。

    原始碼

    python._pth·codebeatme/python-reference·GitHub