能在自己的電腦上開發 Python Exercism 程式碼的實用工具。
這是我們社群中很受歡迎的一系列工具。 這份清單無意規定你該用什麼,也不求完整。 我們認為這些工具都能把工作做好,但當然還有其他同樣優秀的工具。 如果你有推薦的編輯器、IDE、工具或外掛,歡迎你在 GitHub 上把它加進這份文件。
在開始探索之前,請先確認你已安裝近期版本的 Python。
Exercism 網路平台目前支援Python 3.10 - 3.13.5(練習與測試)以及Python 3.13.5(工具)。
我們的線上測試執行器目前使用pytest 8.4.0和pytest-subtests 0.14.2。
我們的線上分析器使用pylint 4.0.4。
在本地使用不同版本的Python、pytest或pylint,得到的結果可能與網站不同。
如需更多資訊,請參閱在本地安裝 Python。
Python 虛擬環境提供輕量的執行環境與套件隔離。 它們能把你安裝的 Python 套件集中放在特定的環境目錄裡,藉此幫你整理專案。 不同的環境可以各自保存不同版本的 Python 執行環境,以及專案或函式庫的相依套件。 這能避免因為升級某個專案的函式庫、卻「弄壞」另一個專案的相依套件,而造成的 bug 與不相容問題。
現今有許多虛擬環境與類虛擬環境工具在使用,也有越來越多人改用行內指令碼中繼資料、開發容器或 docker 來取代虛擬環境。 嘗試各種不同的策略、找出適合你開發風格與專案需求的作法,是很重要的。 別以為這裡的策略一體適用,也別以為它們是你唯一的選擇。 如果想更全面地了解這裡未涵蓋的工具,可以看看 Bas Nijholt 的這篇部落格文章,並保持好奇心。
這裡會介紹三種主要的虛擬環境工具:Python 標準函式庫的 venv、第三方工具 conda env(使用 conda 套件管理器,通常搭配 Anaconda Python 發行版),以及第三方工具、pip + venv 的替代品 uv。
這三種工具的使用和/或安裝都相當簡單。
此外,PyEnv、Poetry 和 virtualenvwrapper 也能協助你在同一台機器上管理多個 Python 版本與多個 Python 環境。
venv 建立虛擬環境若要使用venv建立虛擬環境,請先cd到你想要存放環境的目錄。
這個目錄應該與專案程式碼分開,而且你不會把它納入版本控制。
接著,執行venv指令,並帶上你想用來存放這個特定環境的資料夾名稱。
常見的慣例是把該資料夾命名為<project-name-here>_venv:
Windows
PS C:\Users\foobar> py -m venv {name_of_virtualenv}
若要啟用虛擬環境,請執行以下指令:
PS> .\{name_of_virtual_env}\Scripts\activate.bat
(venv) PS> _
Linux/MacOS
$ python3 -m venv {name_of_virtualenv}
created virtual environment ... in 8568ms
若要啟用虛擬環境,請執行以下指令:
$ source {name_of_virtual_env}/bin/activate
(venv) $ _
一旦啟用了venv,你就能在環境「裡面」執行pip指令來安裝套件。
安裝的套件會與該venv的 Python 版本關聯,並存放在{name_of_virtual_env}/Lib裡。
_停用_虛擬環境可以透過呼叫deactivate指令碼來完成,它與activate位於同一個目錄。
conda 建立虛擬環境最新版的conda可以透過 miniconda 安裝。
這份conda速查表非常實用,conda文件也一樣。
conda最初是為了熱門的「科學 Python」Anaconda distribution 而建立的 Python 套件管理器,後來被通用化並擴充。
Conda 環境與venv類似,關鍵差異在於 conda 除了 Python 之外,還能為許多其他程式語言建立虛擬環境並安裝套件。
Conda 支援的語言包括R、JavaScript、Ruby、Fortran、C/C++、Scala、Java 等。
想比較 conda 與 venv 的指令,請參閱 conda 的指令參考。
若要建立conda環境,請輸入以下內容,並把{name of environment}替換成你選擇的名稱、把python={version}替換成你想要的 Python 版本。
後面可以接著列出你希望安裝到該環境裡的任何其他套件:
$ conda create --name {name of environment} python={version} "pytest>6.0" pylint
...
## Package Plan ##
environment location: /usr/local/anaconda3/envs/test_env
added / updated specs:
- pylint
- pytest[version='>6']
- python=3.10
The following packages will be downloaded:
package | build
---------------------------|-----------------
astroid-2.11.1 | py310h2ec42d9_0 364 KB conda-forge
dill-0.3.4 | pyhd8ed1ab_0 62 KB conda-forge
lazy-object-proxy-1.7.1 | py310he24745e_0 32 KB conda-forge
....
additional packages here
....
------------------------------------------------------------
Total: 21.8 MB
Proceed ([y]/n)? y
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate test_env
#
# To deactivate an active environment, use
#
# $ conda deactivate
在 Windows 上建立conda環境所使用的指令,大致與 Linux/MacOS 相同。
不過,建議你使用 Anaconda 的cmd或powershell提示字元,而不是把conda加進你的路徑:
(base) PS C:\Users\foobar> conda create --name {name_of_environment} python={version} "pytest>6" pylint
...
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: C:\ProgramData\Anaconda3\envs\test_env
added / updated specs:
- pylint
- pytest[version='>6']
- python=3.10
The following packages will be downloaded:
package | build
---------------------------|-----------------
astroid-2.11.1 | py310h5588dad_0 364 KB conda-forge
attrs-21.4.0 | pyhd8ed1ab_0 49 KB conda-forge
bzip2-1.0.8 | h8ffe710_4 149 KB conda-forge
...
additional packages here
...
------------------------------------------------------------
Total: 37.5 MB
Proceed ([y]/n)? y
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate test_env
#
# To deactivate an active environment, use
#
# $ conda deactivate
使用 uv 開發專案:uv
uv是 Astral 推出、以 Rust 撰寫的 Python 套件與專案管理工具。
它的設計目標是取代pip、venv、poetry以及其他 Python 封裝/相依性管理工具。
與Conda或Mamba不同,uv 是專門為 Python 量身打造。
不過,uv 確實支援建置以其他語言(例如 Fortran)撰寫的 Python 擴充模組。
Astral 也是熱門 linter Ruff 與 Python 型別提示靜態型別檢查器 TY 的開發者,兩者都以 Rust 撰寫。
這裡就不詳細說明了,安裝與設定的最佳來源是 UV 文件。
文件與背景資訊:virtualenvwrapper。
virtualenvwrapper套件建構在venv之上,讓你在一處管理所有的虛擬環境。
你可以用類似 Linux 的指令,例如lsvirtualenv(列出環境)和mkvirtualenv(建立環境),來建立、複製、刪除與切換環境。
它也讓你能透過擴充套件加入其他管理工具。
你甚至可以用這個教學為這個工具建立自己的擴充套件。
pyenv是熱門工具rbenv/ruby-build為了 Python 修改而成的 Python 分支。
它基本上是一組指令碼與 shim,讓你能在全域與個別使用者層級設定 Python 版本。
它試著遵循 Unix 的傳統:一個單一用途、低調不擾人的工具,把一件事做好。
pyenv與pyenv文件可以在 GitHub 上找到。
Visual Studio Code(VS Code) 是 Microsoft 開發的免費程式碼編輯器。
它同時對虛擬環境/conda 環境 以及 docker(透過 docker 外掛)提供絕佳支援,還能用許多不同的外掛來擴充,涵蓋測試、linting、格式化 和網頁開發。
擴充功能 ID:ms-python.python

Microsoft 的 Python 擴充功能 是 Microsoft 官方推出、適用於 VS Code 的 Python 擴充功能,非常推薦安裝。 它功能廣泛,包括環境管理、測試管理、linting 和除錯。 從最新版本 開始,安裝 MS Python 擴充功能時也會一併下載 pylance(用來 linting 與驗證 Python 程式碼的熱門套件)以及 jupyter(用來操作 Jupyter Notebooks)。
PyCharm 是 JetBrains 打造的 IDE(整合開發環境)。
它是專為 Python 打造的,在專業人士之間很受歡迎。
和 VS Code 一樣,它能用各種付費與免費外掛、佈景主題和格式化工具來擴充。
付費版還支援 Django 開發、Docker 開發 和資料庫整合。
pytest的coverage外掛會弄壞 PyCharm 的除錯器。
詳情請參閱執行/偵錯設定:pytest。Spyder 是專為科學社群打造、跨平台的免費開源 Python IDE。 它通常隨 Anaconda 的 Python 發行版一起提供,但也可以單獨安裝 並搭配任何 Python 版本使用。 我們建議單獨安裝,以確保最大的彈性,並避免套件衝突。
Spyder 完整支援venv和conda環境。
它內建整合的 IPython 互動式終端機、互動式除錯器,以及豐富的編輯器內繪圖與資料探索支援。
額外的程式碼補全與 linting 由 kite 提供。
與 Jupyter Notebooks 和測試工具 的整合,則透過社群開發的外掛來提供。
你也可以使用 Spyder API 撰寫自己的外掛。
Spyder 常見問題
在 Spyder 中設定 Python 版本/虛擬環境
透過 spyder unittest 外掛 設定 Spyder 以執行unittest與pytest測試
其他 spyder 外掛
Emacs 是以 Lisp 撰寫、免費且開源、高度可自訂的文字編輯器。 Real Python 上有一份很棒的安裝與設定指南。
Vim 是 Unix 標準vi文字編輯器的免費「改良」版。
它可以在各式各樣的作業系統與 Linux/Unix 版本上取得。
Real Python 上有一份很棒的安裝與設定指南,實用的速查表則可以在 vimsheet、glump 和 rtorr 找到。
即使你決定不用vim編輯 Python 程式碼,還是建議你熟悉一組基本指令。
vim或vi經常是 Linux 與 Unix 發行版中「基本」或「預設」的文字編輯器,在這些系統上也是git提交訊息(以及其他用途)的預設編輯器。
你很有可能發現自己身處某個 *nix 系統上,只能靠vi來編輯設定檔,所以知道如何離開 vim(至少)是很好的自我防衛。
Spacemacs(github 儲存庫)是由社群驅動的免費 Emacs 發行版,結合了 Emacs 與 Vim 的功能。
Sublime Text 是 Sublime HQ Pty Ltd 推出、用於寫程式的付費文字編輯器。 它與 VS Code 和 Atom 類似,有許多套件與外掛 可以用來客製化。 你也可以用 Python 為這個編輯器開發自己的外掛。