包與環境
SteelPython 像 CPython 一樣使用 pip 和 venv,並從同一個地方——Python Package Index——安裝相同的包。如果你熟悉 python -m pip 和 python -m venv,那麼本頁的內容你已經知道了;本頁主要說明需要預期的情況。
安裝包
spy -m pip install requests
spy -m pip install "pandas>=2" matplotlib
spy -m pip install -r requirements.txt
spy -m pip list
spy -m pip uninstall requests
pip 文件 中的所有內容都適用:需求檔案、約束、--index-url 和 --extra-index-url、pip download、pip wheel、代理(HTTPS_PROXY)以及證書(--cert、PIP_CERT;預設使用 Windows 證書儲存)。
為自己安裝
當 SteelPython 為機器上的所有使用者安裝時,沒有管理員權限就無法寫入它自己的 site-packages 資料夾。與 CPython 一樣,pip 此時會改為安裝到你的使用者級資料夾 %APPDATA%\SteelPython\Python312\site-packages 中,並給出提示(“Defaulting to user installation because normal site-packages is not writeable”);spy -m pip install --user ... 會顯式要求使用該資料夾。這些包在你執行的每個 spy 中都可用。它們安裝的命令位於 %APPDATA%\SteelPython\Python312\Scripts:請將該資料夾新增到 PATH,或通過 spy 執行它們,例如 spy -m IPython。若要為所有人安裝,請在管理員終端中執行 pip。使用虛擬環境則可以完全避免這個問題。
二進位制 wheel
SteelPython 可以執行 CPython 3.12 的編譯擴充模組,因此 pip 安裝的是 CPython 3.12 所用的同一批 wheel:PyPI 上的 cp312-win_amd64 和 abi3 wheel。numpy、pandas、scipy、scikit-learn、matplotlib、pyarrow、polars、duckdb、lxml、cryptography、pydantic、orjson 等包幾秒鐘即可安裝完畢,無需編譯任何東西,與 CPython 完全相同。
已知可以正常使用的包包括:numpy、pandas、scipy、scikit-learn、statsmodels、seaborn、matplotlib、PyTorch、Keras、transformers、numba、polars、pyarrow、duckdb、streamlit、Flask、FastAPI(配合 uvicorn)、Django、SQLAlchemy、requests、httpx、aiohttp、pydantic、cryptography、lxml、Pillow、grpcio、protobuf、greenlet 和 gevent、pytest、mypy 以及 black。
在 GPU 上執行 PyTorch
PyTorch 的 CUDA 版本來自 PyTorch 自己的索引;請按照其 Get Started 頁面 的說明安裝,只需把 python 換成 spy:
spy -m pip install torch --index-url https://download.pytorch.org/whl/cu128
spy -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"
這些 wheel 超過 2 GB;pip 會照常下載並快取它們。
虛擬環境
像使用 CPython 時一樣,為每個專案建立獨立的環境(venv 文件):
spy -m venv .venv
.venv\Scripts\activate
spy -m pip install -r requirements.txt
spy main.py
deactivate
在 PowerShell 中,請使用 .venv\Scripts\Activate.ps1 啟用。環境在 Scripts\ 中有自己的 spy.exe,在 Lib\site-packages 中存放自己的包;不啟用時,可以直接執行 .venv\Scripts\spy.exe。包安裝的命令(pytest、black、streamlit 等)也會放在 Scripts\ 中,環境啟用後即可按名稱直接使用。
Misp 和 Spy Notebook 會找到專案資料夾中的環境(.venv、venv、env),也可以為你建立一個帶有 pip 的環境。
由 SteelPython 建立的環境屬於 SteelPython:由 CPython 建立的 .venv 不能被 spy 使用,反之亦然。請根據同一個 requirements.txt 另外建立一個環境。
從原始碼構建包
有些包沒有適用於 Windows 的 wheel,或者你可能想自己構建一個(pip install --no-binary,或你自己帶有 C 程式碼的包)。與 Windows 上的 CPython 一樣,這需要 C 編譯器:請安裝 Microsoft C++ Build Tools(Desktop development with C++ 工作負載)。SteelPython 自帶構建所需的標頭檔案和庫(位於 spy.exe 旁邊的 Include\ 和 libs\),setuptools 等構建後端會在尋找 CPython 標頭檔案和庫的位置找到它們。編寫擴充 通過一個小示例完整演示了這一過程。
純 Python 編寫的包永遠不需要編譯器。
當某個包無法使用時
PyPI 上的大多數包都可以使用,但有些包可能依賴 SteelPython 所沒有的東西:
- Tk:任何匯入
tkinter的包(某些繪圖後端、簡單的 GUI 輔助工具)。對於 matplotlib,請使用非 Tk 後端:用MPLBACKEND=Agg將圖形儲存到檔案,或在 Spy Notebook 中顯示它們。 - CPython 內部結構:直接讀取直譯器結構、而不是通過 C API 存取的包(某些在原生程式碼中檢查幀的效能分析器和偵錯程式、位元組碼重寫工具),可能無法匯入或行為異常。
- 引用計數的時機:其測試或邏輯期望物件在最後一個引用消失時就被釋放的包(請參閱 與 CPython 的差異)。
如果某個包無法使用,錯誤資訊通常會說明原因。歡迎將行為異常的包報告至 contact@methodox.io。