使用platform模块的python_implementation函数可以获取python解释器的实现平台,许多人并不知道,python有多个解释器,我们平时所用的是Cpython, 此外还有PyPy, Jython, IronPython他们由其他编程语言实现,绝大部分python代码,不同的解释器都可以执行。
我们平时写代码,不需要关心代码运行在哪个解释器之上,毕竟,大家都在用Cpython。我在阅读pip的源码时,看到pip会检查所运行的解释器是哪一个
try:
from platform import python_implementation
except ImportError: # pragma: no cover
def python_implementation():
"""Return a string identifying the Python implementation."""
if 'PyPy' in sys.version:
return 'PyPy'
if os.name == 'java':
return 'Jython'
if sys.version.startswith('IronPython'):
return 'IronPython'
return 'CPython'
想来是不同的解释器存在一些微小的差异,比如获取解释器的版本,其他解释器下使用platform.python_version()就可以,而对于PyPy则需要对sys.pypy_version_info 进行解析,pip为了可以在任何解释器下都可以执行,因此要在代码里判断运行时所使用的解释器是哪一个。
QQ交流群: 211426309