如何知道代码中的解释器是Jython还是CPython?

时间:2014-03-10 16:13:18

标签: python jython

有没有办法检测执行代码的解释器是Jython还是CPython?

我有另一篇文章:Jython does not catch Exceptions。对于这种情况,如果我知道解释器是Jython,我可以使用不同的代码。

if JYTHON:
    sys.path.insert(0, os.path.dirname(__file__))
    from utils import *
else:
    from .utils import *

3 个答案:

答案 0 :(得分:5)

有正式方法可以做到这一点! :-)请看看

http://docs.python.org/2/library/platform.html#platform.python_implementation

  

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

     

2.6版中的新功能。

之前我不知道。

旧答案

可能没有标准化的界面,但你可以使用一些有根据的猜测,基于例如sys.executablehttp://docs.python.org/2/library/sys.html#sys.executable)和sys.version。此外,一些解释器肯定会提供特定于它们的功能,您可以使用它们。

答案 1 :(得分:1)

我不确定这是安全的方式,但我从Find full path of the Python interpreter?得到了一个提示。

使用print sys.executable,我会得到不同的结果。

context> jython context/context.py
None
context> python context/context.py
/usr/bin/python

因此,检查sys.executable可能是检查的一种方式。

答案 2 :(得分:0)

可能不是最好的方式,但是为了检测Jython,你难道不能尝试从Java导入一些东西吗?

try:
    import java.lang.System
    print "Jython!"
except:
    print "Not Jython"