HOWTO · Python

Python 包安裝在哪裡

本教程演示如何查詢安裝 python 包的目錄

本頁內容

Python 中的包可以定義為包含 Python 檔案的目錄。這些檔案通常是 Python 模組。

隨著程式變得越來越大和越來越複雜,類似的模組被放置在一個包中,這有助於使程式更易於管理並具有更好的可讀性。這種方法通常稱為模組化程式設計,包有助於實現它。

檔案 __init__.py 必須包含在目錄中,以便 Python 將其視為包。該檔案通常包含包的初始化程式碼,但可以留空。

本教程將討論查詢安裝 python 包的目錄的不同方法。

使用 pip 命令列出已安裝的軟體包

在 Python 中,包可以在全域性和本地安裝。

一個包在全域性安裝時可供系統中的所有使用者使用。相同的包在本地安裝時,僅對手動安裝它的使用者可用。

預設情況下,pip 命令會全域性安裝軟體包。

以下程式碼使用 pip 命令列出全域性安裝的軟體包。

# we can also use "pip list command"
pip freeze

儘管預設情況下,pip 命令會全域性安裝軟體包,但也可以使用此命令檢視本地手動安裝的軟體包。

以下程式碼使用 pip 命令列出本地安裝的軟體包。

# we can also use "pip list --user"
pip freeze --user

使用 conda 命令列出本地安裝的軟體包

此方法僅適用於使用 Anaconda IDE 的程式設計師。可以在 conda 環境中列出本地安裝的包。要執行此操作,我們只需在 Anaconda 提示符中編寫一行程式碼。

以下程式碼使用 conda 列出本地安裝的軟體包。

conda list

使用 python 命令列出已安裝的軟體包

python 命令可用於查詢包站點目錄。

全球網站套餐

發現全域性站點包列在 sys.path 中。

以下程式碼使用 python 命令列出全域性安裝的軟體包。

python -m site

site 模組也可以與 python 命令一起使用,以獲得更好、更簡潔的包列表。此方法使用 site 模組中的 getsitepackages()

以下程式碼使用 python 命令和 site 模組列出全域性安裝的軟體包。

python -c 'import site; print(site.getsitepackages())'

請注意 getsitepackages() 函式在 virtualenv 中不可用。

本地安裝的軟體包

本地包安裝在 per-user 站點包目錄 (PEP 370) 中。

以下程式碼使用 python 命令列出本地安裝的軟體包。

python -m site --user-site

使用 distutils.sysconfig 模組列出已安裝的軟體包

distutils 包可用於提供在 Python 安裝中安裝和構建附加模組的功能。在這種情況下,它也可用於列出包。

以下程式碼使用 distutils.sysconfig 列出全域性安裝的軟體包。

python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"

唯一的缺點是它會將我們指向 dist-packages 或作業系統自動安裝的軟體包的目錄。

使用 sysconfig 模組列出已安裝的軟體包

在 Python 3 及更高版本中,sysconfig 模組可用於列出已安裝的軟體包。

不要將 sysconfig 模組與上面提到的 distutils.sysconfig 子模組混淆。後者是一個完全不同的模組,它在此處使用的 get_paths 函式中存在缺陷。

以下程式碼使用 sysconfig 模組列出已安裝的軟體包。

python -c "import sysconfig; print(sysconfig.get_path('purelib'))"

我們在這裡使用 purelib 路徑,它是標準 Python 包的安裝位置,並藉助 pip 等工具。