Python 中的 PYTHONPATH 環境變數是什麼?


Python 中,PYTHONPATH 是一個環境變數,它指定了一個目錄列表,在匯入模組時 Python 會搜尋這些目錄以查詢 Python 模組。當您在 Python 中匯入模組時,Python 會在 sys.path 中指定的目錄中查詢該模組,sys.path 是一個目錄列表,其中包括當前工作目錄和 PYTHONPATH 中指定的目錄。

PYTHONPATH 是一個環境變數,您可以將其設定為新增其他目錄,Python 將在這些目錄中查詢模組和包。對於大多數安裝,您不應該設定這些變數,因為 Python 執行不需要它們。Python 知道在哪裡可以找到其標準庫。

設定 PYTHONPATH 的唯一原因是維護您不想安裝在全域性預設位置(即 site-packages 目錄)的自定義 Python 庫的目錄。

如何使用 PYTHONPATH 的示例 -

在終端中設定 PYTHONPATH

您可以在執行 Python 指令碼之前在終端中設定 PYTHONPATH。這是一個示例 -

$ export PYTHONPATH=/path/to/my/modules/
$ python my_script.py

在指令碼中設定 PYTHONPATH

您可以使用 os 模組 在 Python 指令碼中設定 PYTHONPATH。這是一個示例 -

import os
import sys
sys.path.insert(0, os.path.abspath("/path/to/my/modules/"))

追加到 PYTHONPATH

您可以使用os模組將目錄追加到 Python 指令碼中的 PYTHONPATH。這是一個示例 -

import os
import sys
sys.path.append(os.path.abspath("/path/to/my/modules/"))

使用 .pth 檔案

您可以在包含要新增到 PYTHONPATH 的目錄的目錄中建立一個 .pth 檔案。這是一個示例 -

$ cat /path/to/my/modules/my_modules.pth
$/path/to/my/modules/

使用虛擬環境

當您使用 venvvirtualenv 建立虛擬環境時,它會自動將 PYTHONPATH 設定為包含虛擬環境的 site-packages 目錄。這是一個示例 -

$ python -m venv my_virtualenv
$ source my_virtualenv/bin/activate

使用 .env 檔案

您可以使用 .env 檔案為您的專案設定環境變數,包括 PYTHONPATH。首先,使用以下命令安裝 python-dotenv

pip install python-dotenv

然後,在專案的根目錄中建立一個 .env 檔案,並新增以下行以設定 PYTHONPATH -

PYTHONPATH=/path/to/my/modules/

最後,在您的 Python 指令碼中從 .env 檔案載入環境變數 -

from dotenv import load_dotenv
import os
load_dotenv()
sys.path.insert(0, os.getenv("PYTHONPATH"))

使用包目錄結構

您可以建立一個包目錄結構,其中每個子目錄代表一個包,並且這些子目錄會自動新增到 PYTHONPATH 中。這是一個示例

import my_package.my_module

並像這樣匯入 my_submodule

import my_package.my_subpackage.my_submodule

PYTHONPATH 是一個環境變數,它指定了一個目錄列表,在匯入模組時 Python 會搜尋這些目錄以查詢 Python 模組。當您有不想安裝在全域性預設位置的自定義 Python 庫時,這很有用。有幾種方法可以設定 PYTHONPATH,包括在終端中設定它,使用 os 模組在 Python 指令碼中設定它,使用 os 模組追加到它,使用 .pth 檔案,使用虛擬環境以及使用 .env 檔案。透過有效地使用 PYTHONPATH,您可以更有效地組織 Python 程式碼並使其更易於維護。

總之,這些是使用 PYTHONPATH 指定要搜尋 Python 模組的目錄的一些方法。您選擇的方法取決於您的需求和偏好,但使用虛擬環境或包目錄結構是常用的方法。

更新於: 2023年8月26日

39K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.