【问题标题】:How to know that the interpreter is Jython or CPython in the code? [duplicate]如何知道代码中的解释器是 Jython 还是 CPython? [复制]
【发布时间】:2014-03-10 16:13:17
【问题描述】:

有没有办法检测执行代码的解释器是 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 *

【问题讨论】:

  • Python 是语言规范。最著名的实现是 Jython 和 CPython
  • @JayanthKoushik:那么,您的意思是说没有(简单的或程序化的)方法吗?
  • 不不;我是在指出解释器是 Jython 或 CPython,而不是 Jython 或 Python。我认为编辑说明了这一点。
  • Jython 可执行文件是名为 jython.exe 还是只是 python.exe

标签: python jython


【解决方案1】:

有官方的方法可以做到! :-) 请看看

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

返回一个标识 Python 实现的字符串。可能的返回值有:‘CPython’、‘IronPython’、‘Jython’、‘PyPy’。

2.6 版中的新功能。

我以前不知道。

旧答案

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

【讨论】:

  • 注意:从python3.3开始还有sys.implementation,其中包含实现的名称和版本,可能包含其他相关信息。
【解决方案2】:

我不确定这是否安全,但我从 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 可能是检查的一种方式。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-11
      • 2010-11-09
      • 1970-01-01
      • 2018-01-22
      • 2016-10-09
      • 2016-04-04
      • 2017-09-04
      • 1970-01-01
      • 2014-07-09
      相关资源
      最近更新 更多