简体中文
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"。

后续步骤