繁體中文
English 简体中文 繁體中文
Methodox 首頁

入門

本頁假定你以前用過 Python。如果用過,那就沒什麼需要學的:SteelPython 的直譯器名為 spy,它接受的命令列與 python 相同。

找到 spy

SteelPython 計劃隨 Divooka Compute 一同提供。屆時,Divooka Compute 的資料夾中會包含 spy.exe(直譯器)、Misp.exe(IDE)和 SpyNotebook.exe(筆記本),以及位於 Lib\ 中的標準庫。要找到 Divooka Compute 的資料夾,請在 Steam 庫中右鍵按一下它,然後選擇 Manage > Browse local files。

若要在任意終端中執行 spy,請將包含 spy.exe 的資料夾新增到 PATH:從“開始”選單開啟 Edit environment variables for your account,選擇 Path,選擇 Edit,然後新增該資料夾。之後請開啟一個新的終端。使用獨立 SDK 的企業使用者可以讓其安裝程式完成這一步。

檢查它能否正常工作:

> spy --version
Python 3.12.13 (SteelPython 0.1.0)

互動式提示符

不帶參數執行 spy:

> spy
Python 3.12.13 (main, ...) [SteelPython 0.1.0 on .NET 10.0, 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> sum(n * n for n in range(10))
285
>>> exit()

它的行為與 CPython 的提示符相同:_ 儲存上一個結果,help() 可以使用,Tab 補全名稱,上下方向鍵瀏覽歷史記錄(與 CPython 一樣儲存在 ~\.python_history 中),exit() 退出。行編輯器支援常見的 Emacs 風格按鍵(Ctrl+A、Ctrl+E、Ctrl+K、Ctrl+R 搜尋歷史記錄等)。

spy -m asyncio 提供一個可以在頂層使用 await 的提示符,與 python -m asyncio 相同。

執行程式碼

spy script.py arg1 arg2        run a script; sys.argv is ['script.py', 'arg1', 'arg2']
spy -m package.module          run a module as a script (spy -m pip, spy -m venv, spy -m http.server, ...)
spy -c "print('hello')"        run a string of code
spy -i script.py               run a script, then stay at the prompt with its variables
spy app.pyz                    run a zip application

CPython 的選項在這裡的作用與在 CPython 中相同:-u(無緩衝輸出)、-O、-W、-X、-E、-I、-S、-B、-q、-v,spy -h 會列出它們。CPython 的文件對它們有說明:命令列與環境。

環境變數也是如此:PYTHONPATH、PYTHONUNBUFFERED、PYTHONUTF8、PYTHONSTARTUP、PYTHONDONTWRITEBYTECODE 等。SteelPython 額外增加了一個:SPYPATH,設定該變數後,SteelPython 會讀取它來代替 PYTHONPATH,這樣就不必與同一臺機器上的 CPython 共用一個 PYTHONPATH。

轉換為 CPython 編寫的說明

文件和 README 檔案是為 CPython 編寫的。閱讀時請做以下替換:

文件中寫的是 在 SteelPython 中
python script.py spy script.py
python -m pip install ... spy -m pip install ...
python -m venv .venv spy -m venv .venv
py -3.12 spy
#!/usr/bin/env python3 (Windows 會忽略這一行;請用 spy 執行指令碼)

在已啟用的虛擬環境中,pip 和已安裝包的命令可以照常直接按名稱使用(包與環境)。

檢查程式碼是否在 SteelPython 上執行

import sys

print(sys.implementation.name)    # 'steelpython'
print(sys.version)                # '3.12.13 (main, ...) [SteelPython 0.1.0 on .NET 10.0, 64 bit (AMD64)]'

在 SteelPython 上,platform.python_implementation() 會返回 'CPython',這是有意為之:檢查它的包想知道 CPython 的 C API 和行為是否可用,而在 SteelPython 上它們是可用的。當你自己的程式碼需要區分兩者時,請檢查 sys.implementation.name == "steelpython"。

後續步驟