在 Python 中创建和使用包的初学者指南

試想一下,開發一個僅限於單個 Python 檔案的綜合應用程式是多麼艱鉅的任務。雖然技術上可行,但它違背了構建高效、可維護和可重複使用軟體的核心原則。因此,包和模組對於建構和開發軟體至關重要。

什麼是套件?

在 Python 中,套件提供了一種將邏輯上相關的模組和資源組織在一起的方法。它是一個包含多個 Python 模組、子套件和其他資源的目錄。

套件提供了層次結構,允許你在不同的抽象級別組織專案的程式碼。

套件和模組之間的區別

雖然你可以使用套件和模組來組織程式碼,但它們之間存在差異:

  • 模組:模組是儲存 Python 程式碼的檔案。它定義了可以在程式碼中導入和使用的函式、類別、變數和其他物件。
  • 套件:套件是一個或多個模組的集合,也可以包含子套件。

如何在 Python 中建立套件

要建立套件,請按照下列步驟操作。

第 1 步:建立專案目錄

首先建立一個專案目錄。

 study_bud/

第 2 步:建立套件目錄

在專案目錄中,建立另一個目錄作為套件目錄。給它一個有意義的名稱來代表套件的目的或功能。套件目錄將包含與你的套件相關的模組和子套件。

 study_bud/
    math_tool/

步驟 3:定義套件 __init__.py 檔案

在套件目錄中,建立一個 __init__.py 檔案。__init__.py 檔案的存在使得該目錄成為 Python 中的套件。

如果每次使用套件時都需要初始化程式碼,請將其包含在 __init__.py 檔案中,否則它始終為空。

 study_bud/
    math_tool/
        __init__.py

第 4 步:將模組新增至套件中

在套件目錄中,新增定義函式、類別或變數的 Python 模組 (.py)。

這些模組包含提供套件功能的實際程式碼。你可以在套件目錄中建立多個模組。

 study_bud/
    math_tool/
        __init__.py
        operations.py
        statistics.py

步驟 5:將子套件新增至套件中

如果你的套件需要具有層次結構或包含不同的功能,你可以在套件目錄中建立子套件。

子套件只是主套件目錄中的另一個套件目錄。每個子套件都應該有其 __init__.py 檔案。子套件允許進一步組織和分離程式碼。

 study_bud/
    math_tool/
        __init__.py
        operations.py
        statistics.py
        geometry/
            __init__.py
            shapes.py
        calculus/
            __init__.py
            integrations.py

在這些步驟中,你建立了一個 math_tool 套件,新增了兩個模組 (operations.py 和 stats.py),以及兩個子套件 Geometry 和 calculus,每個子套件都有各自的模組。

透過執行這些步驟,你可以使用套件和子套件輕鬆組織相關功能,從而更輕鬆地管理和重複使用程式碼。

如何在 Python 中使用套件

要使用套件,你需要導入它。import 和 from 關鍵字允許你在程式碼中導入和使用套件。

 import math_tool 

你還可以使用的點符號從套件中導入模組、子套件或特定屬性。點符號允許你瀏覽套件目錄結構。點符號使你的導入更具可讀性且更易於維護。

 from math_tool.operations import add, multiply 

在上面的程式碼中,你使用點符號從套件目錄 (math_tool) 導覽到操作模組,並導入了兩個函式(加法和乘法)。

絕對匯入與相對匯入

使用絕對匯入,你可以指定從頂級套件(根套件)到所需模組或子套件的完整路徑。這是在 Python 中匯入模組和套件的最常見和推薦的方法。

 from math_tool.geometry.shapes import parallelogram

從 math_tool 開始,進入 geometry 子套件,找到 shapes.py 模組,導入平行四邊形函式。

而相對匯入允許你使用點符號指定相對匯入來相對於目前模組的位置進行匯入。

例如,在 calculus/integrations.py 模組內,你可以使用相對匯入從 Geometry 子套件中的 Shapes.py 模組匯入函式。

 
from ..geometry.shapes import rhombus

雙點(“..”)告訴 Python:

  • 從模組 (integrations.py) 所在的子套件目錄 (calculus) 開始。
  • 進入子套件的父套件 (math_tool) 目錄。
  • 在父目錄中找到 geometry 子套件。
  • 進入 Shapes.py 模組並從中導入菱形。

因此,點符號表示從目前模組目錄導覽到的目錄數。

為方便起見,別名匯入

你可以為匯入指定別名,以便更輕鬆地在程式碼中引用。處理長套件或模組名稱時,別名很方便。

要分配別名,請使用 as 關鍵字。

 import math_tool.calculus as cal

如何在 Python 中散佈你的套件

Python 為你提供了建構和散佈套件的工具和平台。透過散佈套件,你可以與其他開發人員共享程式碼、促進協作、簡化使用者安裝,並為更廣泛的 Python 社群做出貢獻。

第 1 步:在 PyPI 上建立帳戶

Python 套件索引 (PyPI) 是 Python 套件的預設儲存庫。你可以在 PyPI 上發佈你的套件,以便其他開發人員可以輕鬆找到並安裝它們。

請務必記住你的使用者名稱和密碼,因為在將套件上傳到 PyPI 時需要它們進行身分驗證。

第 2 步:安裝套件管理工具

這些工具使你可以輕鬆地透過單個命令配置、建構和推送可散佈套件。

 pip install build wheel twine

第 3 步:建立 setup.py 檔案

要散佈你的套件,請建立一個 setup.py 檔案 在你專案的根目錄中。setup.py 檔案包含有關套件的元資料,例如其名稱、版本、作者、描述、依賴項等。

套件管理工具將使用 setup.py 檔案來配置和建構你的套件。

 
from setuptools import setup, find_packages

setup(
    name="<套件名稱>",
    version='1.0.0',
    author="<你的姓名>",
    description='數學實用函式集合',
    packages=find_packages(),
    install_requires=[
        'numpy',
        'scipy',
    ],
)

第 4 步:建構套件

準備好 setup.py 檔案後,你可以使用它來建構可散佈套件。在終端或命令提示字元中,導覽到包含 setup.py 檔案的目錄並執行以下命令:

 python setup.py sdist bdist_wheel

此命令產生一個 dist 目錄,其中包含來源散佈套件 (.tar.gz) 和 Wheel 散佈套件 (.whl)。你還將看到建構和資訊目錄。

第 5 步:將套件上傳到 PyPI

準備好套件後,你可以將其上傳到 PyPI。

執行以下命令:

 twine upload dist/*
> Uploading distributions to https://upload.pypi.org/legacy/
> Enter your username: **********
> Enter your password: **********

瀏覽你的 PyPI 專案管理頁面查看你的套件。

現在,其他發現你的軟體包有用的開發人員可以在本地安裝和使用它。

如何安裝 Python 套件

pip 等套件管理員可以輕鬆安裝和管理來自各種來源的 Python 套件,包括 Python 套件索引 (PyPI)。要使用 pip 安裝套件,請開啟終端或命令提示字元並使用以下命令:

 pip install <package_name>

要查看 pip 的所有可用命令和選項,請使用 –help 選項。

編寫乾淨的模組

套件包含模組和子套件,而模組和子套件又包含其他模組。模組化程式碼是一種很好的做法,尤其是在處理大型專案時,因為它可以促進更好的程式碼組織和可讀性。因此,在使用 Python 開發時,清晰地編寫模組非常重要。