推荐使用 sys.implementation.name 判断解释器类型:值为 "cpython" 或 "pypy";兼容旧版本可用 platform.python_implementation().lower();避免依赖 sys.platform、sys.version_info 等无关字段。
可以通过检查
或
来准确判断当前 Python 解释器是 CPython 还是 PyPy。
推荐方式:使用
这是最直接、轻量且标准的方法,从 Python 3.3 起引入,适用于所有兼容 PEP 421 的实现:
→ 表示运行在 CPython 上
→ 表示运行在 PyPy 上
其他值如
、
等也有效
示例代码:
import sysprint(sys.implementation.name) # 输出 'cpython' 或 'pypy'
兼容旧版本:用
该函数在 Python 2.6+ 就已存在,返回字符串如
或
(注意首字母大写):
立即学习
“
Python免费学习笔记(深入)
”;
Trae win
Trae Windows 官方版本现已全面支持 Win10 和 Win11 系统(64位)。国内开发者可直接访问 Trae 中文官网(trae.cn 或 trae.com.cn),一键下载官方正版 .exe 安装包,享受国内直连的高速稳定体验。安装过程极其简便,双击即可运行,并支持一键无缝导入 VS Code 或 Cursor 的原有主题、快捷键及插件配置。登录支持手机号、微信或稀土掘金账号。内置免费的豆包与 DeepSeek 等顶级大模型,让你开箱即用,轻松开启高效的 AI 智能编程之旅。
下载
返回值区分大小写,建议用
统一比较
在极老版本或某些嵌入环境中可能不可靠,但日常使用足够稳定
示例代码:
import platformprint(platform.python_implementation().lower()) # 输出 'cpython' 或 'pypy'
辅助验证:看
或
这些不是主要判断依据,但可作为交叉验证:
中包含解释器标识,比如 PyPy 的版本字符串通常含
为
基本可确认是 PyPy(CPython 没这个属性)
不建议单独依赖
解析,因为格式可能变化
避免误判:不要只看
或编译器信息
这些字段反映的是
操作系统
或构建环境,和解释器类型无关:
是
、
等,不是解释器名
只表示 Python 语言版本(如 3.9、3.11),不区分实现
版本等编译器信息出现在
里,但 CPython 和 PyPy 都可能用 gcc 编译,不能据此判断
sys.implementation.nameplatform.python_implementation()sys.implementation.namesys.implementation.name == "cpython"sys.implementation.name == "pypy""jython""ironpython"platform.python_implementation()"CPython""PyPy".lower()sys.versionsys.pypy_version_infosys.version"PyPy"hasattr(sys, "pypy_version_info")Truesys.versionsys.platformsys.platform"linux""win32"sys.version_infogccsys.version