问题 在运行时确定Python的实现?


我正在编写一段返回分析信息的代码,能够动态返回正在使用的Python实现会很有帮助。

是否有一种Pythonic方法来确定我的代码在运行时执行的Python的实现(例如Jython,PyPy)?我知道我可以从中获取版本信息 sys.version

>>> import sys
>>> sys.version
'3.4.3 (default, May  1 2015, 19:14:18) \n[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.49)]'

但我不确定在哪里看 sys 模块来获取代码运行的实现。


1915
2017-07-14 12:51


起源

@Jasper这个问题涉及返回 版 Python,而不是实现。
你没有定义“实现”,尽管你在自己的答案中做得很清楚。 - msw
@msw我不确定我是否同意。官方维基使用相同的语言: wiki.python.org/moin/PythonImplementations 无论如何,如果问题含糊不清,请道歉。


答案:


您可以使用 python_implementation 来自 platform 模块 Python 3 要么 Python 2。这将返回一个标识Python实现的字符串。

例如

return_implementation.py

import platform
print(platform.python_implementation())

并在命令行上迭代一些响应:

$ for i in python python3 pypy pypy3; do echo -n "implementation $i: "; $i return_implementation.py; done
implementation python: CPython
implementation python3: CPython
implementation pypy: PyPy
implementation pypy3: PyPy

请注意,在此答案的日期,可能的响应是'CPython','IronPython','Jython','PyPy',这意味着您的实现可能不会被返回 python_implementation 功能,如果它不与身份 sys 模块作为这些类型之一。

python_implementation 正在打电话 sys.version 在引擎盖下并尝试将响应与正则表达式模式匹配 - 如果没有条件匹配,则没有匹配的字符串响应。


13
2017-07-14 12:52