在运行时确定Python的实现?

时间:2015-07-14 12:51:41

标签: 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模块中查看代码运行的实现位置。

1 个答案:

答案 0 :(得分:13)

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

e.g。

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& #39;,这意味着如果python_implementation函数不与sys模块作为其中一种类型标识,则您的实现可能不会被返回。

python_implementation is calling sys.version并尝试将响应与正则表达式匹配 - 如果没有条件匹配,则没有匹配的字符串响应。