Python 本體裝起來很簡單,但實務上每個專案要獨立的虛擬環境、要鎖定依賴版本、可能還要切換 Python 版本。這篇把 Windows 上從零裝 Python、開虛擬環境、用 pip 與更現代的 uv 管理依賴一次串完,後面所有 Python 篇都假設這環境已經就位。
在 Windows 安裝 Python
到 python.org 下載 .exe,安裝時務必勾 Add Python to PATH。裝完開新的 PowerShell 驗證:
python --version
# Python 3.13.x
Windows 上裝了多個版本時,python 可能指到錯的那個。可以用 py -3.13 這種版本選擇器,或乾脆用 uv 統一管理(下面講)。
多版本管理:uv
不同專案用不同 Python 版本是常態。uv 是 Rust 寫的工具鏈管理器,極快、跨平台、整合套件管理一條搞定,現在的新專案首選:
# 用 PowerShell 的 winget 裝 uv(最簡單)
winget install --id=astral-sh.uv -e
# 或從官網一鍵腳本(PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# 裝 Python
uv python install 3.13
# 在專案裡指定要用哪個版本
uv python pin 3.13
虛擬環境(venv)
每個專案開獨立虛擬環境是基本紀律,避免不同專案的套件版本互相打架。
# 建立
python -m venv .venv
# 啟用(PowerShell)
.venv\Scripts\Activate.ps1
# 啟用(cmd)
.venv\Scripts\activate.bat
# 退出
deactivate
PowerShell 第一次跑啟用腳本如果被擋,是執行原則的限制。一次性開放當前使用者:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
啟用後 python、pip 都指向 .venv 內,與全域分離。
.venv 一律加進 .gitignore,不應 commit。
pip:套件管理
pip install requests # 裝最新
pip install requests==2.32.0 # 指定版本
pip install "requests>=2.30,<3" # 範圍
pip install -U requests # 升級
pip uninstall requests
pip list # 列出已裝套件
pip show requests # 套件資訊
pip freeze > requirements.txt # 鎖定版本到檔案
pip install -r requirements.txt # 從檔案安裝
requirements.txt 與 pyproject.toml
兩個慣用檔:
requirements.txt(傳統):
requests==2.32.0
flask>=3.0,<4
pyproject.toml(PEP 621,現代專案標準):
[project]
name = "my-app"
version = "0.1.0"
requires-python = ">=3.10"
dependencies = [
"requests>=2.30",
"flask>=3.0",
]
[project.optional-dependencies]
dev = ["pytest", "ruff", "mypy"]
uv:建議的現代工作流
uv 一條命令搞定 Python、虛擬環境、依賴:
# 在資料夾起新專案(會建 .venv 與 pyproject.toml)
uv init my-app
cd my-app
# 加套件(自動寫入 pyproject.toml + uv.lock)
uv add requests
uv add --dev pytest
# 同步環境(裝齊 pyproject.toml + uv.lock 列的套件)
uv sync
# 跑命令(自動用專案 .venv,不用手動 activate)
uv run python main.py
uv run pytest
uv.lock 是版本鎖定檔,commit 進 git 確保所有人裝到一樣的版本。
第一支程式
hello.py:
def greet(name):
return f'Hello, {name}'
if __name__ == '__main__':
print(greet('Jeremy'))
執行:
python hello.py
# 在虛擬環境裡(已 activate)也是同樣 python
# 或用 uv(不必手動 activate)
uv run python hello.py
if __name__ == '__main__': 這一行的意思是「只有在這個檔被直接執行(不是被 import)時才跑」。下一章會更詳細展開。
REPL 與 IPython
Python 自帶 REPL:
python
>>> 1 + 1
2
>>> exit()
更強大的互動環境用 IPython:
pip install ipython
ipython
支援 tab 補全、? 查 docstring、!ls 跑 shell 命令、magic command(%timeit、%paste)。
編輯器與 Linter
VS Code 配 Python extension 即可(內建 Pylance LSP)。常用工具:
| 工具 | 用途 |
|---|---|
ruff | Lint + 格式化(取代 flake8 + black + isort,極快) |
mypy | 靜態型別檢查(最後一篇會講) |
pytest | 測試框架 |
ruff 一條搞定:
uv add --dev ruff
uv run ruff check . # lint
uv run ruff format . # 格式化
裝完 Python、開得起 venv、跑得起第一支 hello.py,環境就算就緒。下一篇進基本型別與資料結構,前面 def greet(name) 的 type hint 會在「型別提示」那篇正式展開。
Latest Updates
- 2026.06.11 Content updated
