How to know that the interpreter is Jython or CPython in the code? [duplicate]

本秂侑毒 提交于 2019-12-10 14:24:21

问题


Is there a way to detect that the interpreter that executes the code is Jython or CPython?

I have another post: Jython does not catch Exceptions. For this case, if I know the interpreter is Jython, I can have different code that should work.

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

回答1:


There is an official way to do it! :-) Please have a look at

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

Returns a string identifying the Python implementation. Possible return values are: ‘CPython’, ‘IronPython’, ‘Jython’, ‘PyPy’.

New in version 2.6.

I did not know that before.

Old answer:

There probably is no standardized interface, but you can use some educated guessing, based on e.g. sys.executable (http://docs.python.org/2/library/sys.html#sys.executable), and sys.version. Furthermore, some interpreters for sure provide features that are specific to them, which you can make use of.




回答2:


I'm not sure this is safe way, but I got a hint from Find full path of the Python interpreter?.

With print sys.executable, I have different results.

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

So, checking sys.executable might be one way for the checking.




回答3:


Might not be the best way, but to detect Jython, couldn't you just try to import something from Java?

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


来源:https://stackoverflow.com/questions/22305438/how-to-know-that-the-interpreter-is-jython-or-cpython-in-the-code

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!