建立套件的起點

開發 Python 套件

James Fulton

Climate informatics researcher

為什麼要做成套件?

  • 讓程式碼更容易重複使用
  • 避免大量複製貼上
  • 隨時維護函式為最新
  • 方便把程式碼分享給他人
開發 Python 套件

課程內容

你將打造一個完整套件,並學會:

  • 檔案結構
  • 匯入結構
  • 讓套件可安裝
  • 加上授權與 README
  • 風格與單元測試,提升品質
  • 在 PyPI 註冊與發佈
  • 使用套件樣板
開發 Python 套件

Script、module 與 package

  • Script(指令稿)- 以 python myscript.py 執行的 Python 檔案

  • Package(套件)- 放有可供匯入的 Python 程式碼之目錄

    • 例如:numpy
  • Subpackage(子套件)- 套件中的較小套件

    • 例如:numpy.randomnumpy.linalg
  • Module(模組)- 套件內儲存程式碼的 Python 檔案。

    • 例如:範例將在接下來第 2 張投影片出現
  • Library(函式庫)- 一個套件,或多個套件的集合

    • 例如:Python 標準函式庫(mathosdatetime…)
開發 Python 套件

套件的目錄樹

簡單套件的目錄樹

mysimplepackage/
|-- simplemodule.py
|-- __init__.py
  • 這個名為 mysimplepackage 的目錄是 Python 套件
  • simplemodule.py 放著套件的所有程式碼
  • __init__.py 標記此目錄為 Python 套件
開發 Python 套件

簡單套件的內容

__init__.py

空白檔案

simplemodule.py
def cool_function():
    ...
    return cool_result

...

def another_cool_function():
    ...
    return another_cool_result

放置通用函式與程式碼的檔案。

開發 Python 套件

子套件

含子套件的目錄樹

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
開發 Python 套件

一起來練習吧!

開發 Python 套件

Preparing Video For Download...