Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何知道解释器在代码中是Jython还是CPython?_Python_Jython - Fatal编程技术网

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

如何知道解释器在代码中是Jython还是CPython?,python,jython,Python,Jython,有没有办法检测执行代码的解释器是Jython还是CPython 我还有一个帖子:。对于这种情况,如果我知道解释器是Jython,我可以使用不同的代码 if JYTHON: sys.path.insert(0, os.path.dirname(__file__)) from utils import * else: from .utils import * 有一个官方的方法来做:-)请看一看 返回标识Python实现的字符串。可能的返回值为:“CPython”、“Iro

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

我还有一个帖子:。对于这种情况,如果我知道解释器是Jython,我可以使用不同的代码

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

有一个官方的方法来做:-)请看一看

返回标识Python实现的字符串。可能的返回值为:“CPython”、“IronPython”、“Jython”、“PyPy”

版本2.6中的新功能

我以前不知道

旧答案


可能没有标准化的界面,但您可以使用一些有根据的猜测,例如,
sys.executable
()和
sys.version
。此外,一些口译员肯定会提供特定于他们的功能,您可以利用这些功能。

我不确定这是否安全,但我从中得到了一些提示

对于打印系统可执行文件,我得到了不同的结果

context> jython context/context.py
None
context> python context/context.py
/usr/bin/python
因此,检查
sys.executable
可能是检查的一种方法

可能不是最好的方法,但是要检测Jython,您不能尝试从Java导入一些东西吗

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

Python是语言规范。最著名的实现是Jython和CPython。@JayanthKoushik:那么,你的观点是没有(简单的或编程的)方法吗?没有;我要指出的是,解释器是Jython或CPython,而不是Jython或Python。我想编辑说明得很清楚。Jython可执行文件名为
Jython.exe
,还是仅仅是
python.exe
。另请注意:从python3.3开始,还有一个包含实现的名称和版本,可能包含其他相关信息的文件。