CPython、IronPython、Jython 脚本是不是相互兼容?

Posted

技术标签:

【中文标题】CPython、IronPython、Jython 脚本是不是相互兼容?【英文标题】:Are CPython, IronPython, Jython scripts compatible with each other?CPython、IronPython、Jython 脚本是否相互兼容? 【发布时间】:2009-12-23 16:56:17 【问题描述】:

我很确定 python 脚本可以在所有三个中工作,但我想确定一下。我在这里和那里阅读了有关可以编写 CPython、Jython、IronPython 的编辑器的信息,我希望我能深入了解其中的区别。

我的情况是我要测试 3 个不同的 api。每个 api 在代码方面执行相同的功能,但它们在实现上是不同的。我正在围绕每种语言的 api 编写包装器。每个包装器都应该使用 Boost::python、Jython 和 IronPython 向 python 公开完全相同的功能和实现。

我的问题是,使用这些公开的方法(每种语言都通用)编写的 Python 脚本是否适用于 Python 的所有三种“风格”?

就像我说的那样,我很确定答案是“当然可以”,但在我花太多时间做这件事之前,我需要确定一下。

【问题讨论】:

【参考方案1】:

简短的回答是:有时。

某些基于 IronPython 构建的项目可能无法与 CPython 一起使用,并且某些用 C 编写的 CPython 模块(例如 NumPy)无法与 IronPython 一起使用。

类似地,虽然 Jython 实现了语言规范,但它与 CPython 有一些不兼容(例如,它缺少 CPython 标准库的一些部分,它可以导入 Java 标准库包和类,如 Swing)

所以,是的,只要你避免不兼容。

【讨论】:

好的,我已经阅读了一些关于检测您在 python 中使用哪个库的帖子,所以只要将不兼容性保持在最低限度,这应该会很好地工作。谢谢 @Charles:另外,每个其他 Python 解释器(Jython、IronPython)都会有很好的文档详细说明它不符合 CPython 的地方。如果您密切关注这些文档,您将能够快速判断出适用于所有三个文档的内容。 ipython 和 cpython 之间的差异:en.wikipedia.org/wiki/IronPython#Differences_with_CPython 似乎很小。

以上是关于CPython、IronPython、Jython 脚本是不是相互兼容?的主要内容,如果未能解决你的问题,请参考以下文章

Cpython和Jython的对比介绍

Python的实现分类

尽管 JVM 取得了进步,为啥 Jython 比 CPython 慢得多?

全局解释锁

零基础学PythonDay10 Python解释器

零基础学PythonDay10 Python解释器