入门
本页假定你以前用过 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"。
后续步骤
- 安装一些包:包与环境。
- 在 Misp 中编写和调试代码,或在 Spy Notebook 中探索数据。
- 在移植大型程序之前,请阅读 与 CPython 的差异。