[Note: 這一篇要改放到 Ch. 26 之前]
除了自己寫程式之外,我們還可以直接使用別人寫好的程式,稱為套件(package)。有很多很厲害的功能,只要安裝套件就可以直接使用。
各個語言都會有自己的套件倉庫,可以用功能關鍵字來搜尋需要的套件。例如 Python 最主流的套件倉庫就是 pypi.org。而在這個頁面裡,有個「Source (原始碼)」的按鈕。
按下「Source」按鈕後,會到我們之前上傳專案的 Github 頁面。大部份的套件都會在倉庫及 Github 都有頁面。
有些套件,會需要先安裝更基礎的套件,這個情況,我們把它稱之為「套件依賴」。為了比較方便使用,我們都會使用專案管理工具來設定,只要寫下我們真正需要的套件及版本,專案管理工具就會幫我們把其它依賴的東西都處理好。
在 Python 中,現在的主流是使用 uv
這個工具來管理 python 專案。我們先用 homebrew 來安裝 uv 指令:
brew install uv
接著用 mkdir 專案名稱 && cd 專案名稱
,建立並切換到新的專案資料夾中。再使用 uv init
來初始化 uv 專案。
$ mkdir my_project && cd my_project
$ uv init
pyproject.toml
專案初始化之後,會在資料夾下看到一張 pyproject.toml
,這是 uv 用來設定專案的資訊,及需要套件的地方。一開始會長得像這樣:
[project]
name = "my-project"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = []
例如要安裝 pytest,我們要在終端機中,輸入
uv add --dev pytest
這樣會把把套件名稱及版本號碼加到這個檔案裡,dependencies
陣列裡。(dependencies 是「依賴」的意思。)
還是回到終端機,輸入 uv sync
,就會把需要的套件下載安裝到專案裡了。
當我們使用別人寫好的工具時,有幾個重點要考慮
另外還有一個很重要的事:這是個框架 (Framework) 嗎?
有些套件比較像是工具包,例如資料處理常用的「NumPy」。在專案中你可以依你自己習慣的方式跟典範寫程式,當需要用到資料處理的功能時,在主動去呼叫 NumPy 提供的功能就好了。這種的通稱為 「函式庫」 (Library)。
但有些套件會說明這是一個「框架 (framework)」,代表了它已經想好這個功能需要的整體結構,而且把共同的程式都寫好了,你使用框架時需要做的事,是看它的說明文件與架構,並在他需要你自行定理的部份,加上程式碼。這麼一來,程式運作起來時,整體的控制權在框架手上。框架會在它需要的時候,呼叫你寫出來的程式碼。
一般來說,當應用程式套件有完整的架構,通常是「框架」型的。例如 Python 的 Django、Ruby 語言上非常好用的 Ruby on Rails 框架,以及 Elixir 語言上的 Phoenix,都是有自己的觀點與做事哲學的框架。
pyproject.toml
裡設定相依套件