集成Python和JavaScript的最佳方法?

集成Python和JavaScript的最佳方法?,javascript,python,brython,transcrypt,rapydscript,Javascript,Python,Brython,Transcrypt,Rapydscript,有可能集成Python和JavaScript吗?例如,假设您希望能够在JavaScript中定义类并从Python中使用它们(反之亦然)。如果是,最好的方法是什么?我不仅对这是否可能感兴趣,而且对是否有人在“严肃”的项目或产品中做过这件事感兴趣 例如,我猜想使用和是可能的,但我很好奇是否有人真的这样做过,是否有其他平台的解决方案(尤其是)。这里有一个东西,SeaMonkey Javascript解释器周围的Python包装 有一个基于JavaScriptCore(来自WebKit)的桥,但它非常

有可能集成Python和JavaScript吗?例如,假设您希望能够在JavaScript中定义类并从Python中使用它们(反之亦然)。如果是,最好的方法是什么?我不仅对这是否可能感兴趣,而且对是否有人在“严肃”的项目或产品中做过这件事感兴趣


例如,我猜想使用和是可能的,但我很好奇是否有人真的这样做过,是否有其他平台的解决方案(尤其是)。

这里有一个东西,SeaMonkey Javascript解释器周围的Python包装

有一个基于JavaScriptCore(来自WebKit)的桥,但它非常不完整: 怎么样

从上述网站:

pyjs是一个用于Web和桌面的富Internet应用程序(RIA)开发平台。使用pyjs,您可以完全用Python编写支持JavaScript的web应用程序


如果您对在javascript和python之间共享复杂数据类型感兴趣,请查看。它包装了标准的Python JSON库,但在序列化和反序列化Python类和其他数据类型方面有一些优点


相当多的Google应用程序引擎项目使用了这个库。它们都包含了jsonpickle。

您可能还想查看PyPy项目——它们有一个Python到(任何)编译器,包括Python到Javascript、C和llvm。这允许您用Python编写代码,然后根据需要将其编译成Javascript

此外,请查看信息丰富的博客:

但不幸的是,您不能以这种方式将Javascript转换为Python。总的来说,它似乎工作得非常好,他们曾经有一个Bub'n'Bros在线游戏的Javascript(由编译过的Python编写)版本(尽管服务器已经关闭了一段时间)


有两个项目允许在python对象和javascript对象之间进行“明显”转换,将int或float转换为Number,将str或unicode转换为String,正如一位作者已经提到的那样:

pyv8实际上有两个实现——最初的实验是由sebastien louisel完成的,第二个(在积极开发中)是由flier liu完成的

我对这些项目感兴趣的是将它们链接到一个python到javascript编译器,以创建一个JIT python加速器


所以有很多-这取决于你想做什么。

你也可以使用
XPCOM
,比如在基于
XUL
的应用程序中,比如Firefox、Thunderbird或Komodo。

我不久前在玩Pyjon,似乎可以直接用Python编写Javascript的eval并运行简单的程序。。。虽然它不是JS的完整实现,而是一个实验。 在这里获取:

能够使用PyV8、Node、JavaScriptCore、SpiderMonkey和JScript中的每一种

>>> import execjs
>>> execjs.eval("'red yellow blue'.split(' ')")
['red', 'yellow', 'blue']
>>> execjs.get().name
'Node.js (V8)'

用于将JavaScript转换为Python,这是唯一可用的工具:)

这个问题并不年轻,但有一些替代方案:

  • “完全是Python的浏览器内实现。”
  • -“用于客户端web编程的Python 3实现”
  • -“类似Python的JavaScript,没有额外的开销或怪癖”
  • -“精简且平均的Python 3.6到JavaScript编译器,具有多重继承、源映射、静态类型检查和选择性运算符重载。”

上面提到的这些项目中有许多已经死亡或即将死亡,缺乏作者方面的活动和兴趣。关注这一领域的发展很有趣

作为记录,在基于插件的实现时代,KDE阵营曾试图用插件和非语言特定的方式解决这个问题,并创建了Kross——据我所知,它甚至在社区内部也从未出现过


在这个鸡和蛋的问题时期,基于javascript的实现无疑是一条必经之路。也许将来我们会在浏览器中看到纯粹、干净、完整的Python支持。

这似乎是最接近我想要的东西;谢谢。请注意,jsonpickle使用了非标准的“py/ref”引用类型,这使得它更难用于非python客户机。目前没有办法关闭它。也许您可以使用Emscripten将CPython编译成JavaScript,然后在浏览器中运行CPython。可以从JavaScript调用Python函数,反之亦然@AndersonGreen这已经完成了:pypyjs——无论如何,它提供了一种在JS和Python之间共享对象的统一方法,并在其中实现,只需包装一个通过webpack捆绑的NodeJS模块,并将其公开为Python模块。@AppleGrew是否可以完全在浏览器中运行pyjamas(没有任何服务器端组件)?请注意,pyjs不支持Python 3.0+
pyjs
不再维护(上一次提交是在2015年9月22日).pyv8仍然得到了很好的维护,不幸的是,与这里的答案中介绍的几乎所有其他想法相比。现在支持Python 3只需再加上我的两分钱,Skulpt和Brython都是玩具,而不是成熟的编译器/语言。RapyScript和Transcrypt将围绕它们运行一圈性能。事实上,没有性能JS中的RMAT Python解释器是RapydScript发明的原因。RapydScript现在与TypeScript一样具有额外的类型安全优势。免责声明:我是RapydScript维护者。@AlexanderTsepkov我没有时间测试这些,所以感谢您的添加:)Transcrypt可以安装在pip上,如果你不想沉浸在js生态系统中,那就好了。不过,就我目前收集的资料来看,RapydScript似乎是最快的传输选项。这里描述了一系列不错的选项。还有一些似乎没有得到维护。