检测IronPython的最佳方法

Meh*_*Meh 15 python ironpython version detection

我需要编写一个将在CPython和IronPython中使用的模块.什么是检测IronPython的最佳方法,因为在这种情况下我需要稍微不同的行为?

我注意到sys.platform在CPython上是"win32",但在IronPython上是"cli".

是否有其他首选/标准的检测方式?

Mar*_*off 17

Python 2.6中的新功能是platform.python_implementation:

返回标识Python实现的字符串.可能的返回值是:'CPython','IronPython','Jython'.

这可能是最干净的方式,而且这是标准的.但是,我相信Jython仍然运行2.5,所以我不确定你是否可以依靠它来检测Jython(但这不是你问题的一部分).

  • 在当前的IronPython 2.6.1实现中似乎有点破碎:) (2认同)

Fre*_*res 5

以下代码适用于CPython 2.6和Iron Python 2.6(.NET 2.0).但不适用于Iron Python 2.6(.NET 4.0),platform.py解析版本号存在一些问题.我向Python.org提交了一个缺陷.修复platform.py并不困难.

import sys
import platform

def IsIronPython():
    return platform.python_implementation().lower().find("ironpython")!=-1

print IsIronPython()
Run Code Online (Sandbox Code Playgroud)