在 Web 中執行和除錯 Python
我們很高興地宣佈,我們為在 Web 上執行 Python 程式碼提供了實驗性支援。要試用此功能,請從 Marketplace 安裝最新預釋出版本的 Experimental - Python for the Web 擴充套件。這項工作基於目前仍在開發中的 Python WASM。要了解更多關於其工作原理和當前進展的資訊,您可以閱讀 將 Python 編譯為 WebAssembly (WASM)。
先決條件
使用此擴充套件需要滿足以下先決條件:
- 您需要安裝 GitHub Repositories 擴充套件。
- 您需要透過 GitHub 進行身份驗證。
- 您需要使用支援跨域隔離的瀏覽器。該擴充套件已在 Microsoft Edge 和 Google Chrome 瀏覽器上進行過測試。
- 您需要使用 Insider 版本的 VS Code for the Web (例如
https://insiders.vscode.dev/
)。 - 您的原始碼必須託管在本地檔案系統,或者透過 GitHub Repositories 擴充套件訪問的 GitHub 倉庫中。
- 啟動 VS Code for the Web 時,您需要在 URL 的末尾新增以下查詢引數:
?vscode-coi=
。
執行 Hello World
下面的截圖展示了在瀏覽器中執行一個簡單的 Python 程式。該程式由兩個檔案 app.py
和 hello.py
組成,儲存在本地檔案系統上。
啟動 REPL
該擴充套件附帶一個整合的 Python REPL。要啟用它,請執行 Python WASM: Start REPL 命令。
除錯
此擴充套件支援在 Web 上除錯 Python 檔案,並使用與 VS Code 桌面版除錯相同的使用者介面。目前支援的功能有:
- 設定斷點
- 單步進入和跳出函式
- 跨模組除錯
- 在除錯控制檯中評估變數
- 在整合終端中除錯程式
下面的截圖展示了一個活動的除錯會話。這些檔案直接託管在這個示例倉庫的 GitHub 上。
建立您自己的 Python 環境
該擴充套件使用基於 CPython WebAssembly 構建版本的預配置 Python 環境。所使用的構建版本是 Python-3.11.0-wasm32-wasi-16.zip
。
您可以按照以下步驟建立自己的 Python 環境,包括原始碼 wheel 格式的 Python 包:
-
建立一個新的 GitHub 倉庫。
-
從 cpython-wasm-test/releases 下載一個 wasm-wasi-16 構建版本,並將其解壓到倉庫的根目錄。
-
要新增原始碼 wheel 格式的包,請執行以下操作:
- 在根目錄中建立一個
site-packages
資料夾。 - 使用以下命令安裝包:
pip install my_package --target ./site-packages
。請注意,您的作業系統中需要有包含 pip 的 Python 安裝。
- 在根目錄中建立一個
-
提交更改。
-
更改
python.wasm.runtime
設定,使其指向您的 GitHub 倉庫。例如:{ "python.wasm.runtime": "https://github.com/dbaeumer/python-3.11.0" }
限制
Python for the Web 支援並未提供在本地機器上執行原始碼時可用的所有功能。Python 直譯器的主要限制有:
- 不支援套接字 (socket)。
- 不支援執行緒。因此,也不支援非同步操作。
- 不支援 pip。
- 不支援原生的 Python 模組。
致謝
沒有 Python 社群構建和維護必要的 CPython WASM 檔案的支援,這項工作是不可能完成的。
反饋
如果您在使用 Python for the Web 擴充套件時遇到問題,可以在 vscode-python-web-wasm 倉庫中提交問題。