能否在Chrome中运行原生的Python代码?

13
我想知道是否可以在Chrome中运行本地Python代码,而不是JavaScript。我看到了像pyjsbrython这样的项目,但它们所做的是将Python编译为JavaScript。虽然这些都是伟大的项目,但这种方法的问题始终是您无法轻松调试原始的Python代码。
除此之外,我还偶然发现了thread,其中描述了如何为chromes-sandbox开发自定义代码。但这可能会导致在沙箱中实现Python解释器,这是一种过度设计。
非常感谢任何帮助!(我不想开始任何关于Python与JavaScript的讨论,只是想知道这是否可能以及如何做到)
此致
敬礼
Marco

1
http://www.skulpt.org/ ... 但它在底层也将其转换为js - Joran Beasley
不幸的是,skulpt 正在做与 brython 和 pyjs 完全相同的事情 - 将 Python 代码解析为 JavaScript... 而不是在浏览器中本地运行。 - user2210287
令人兴奋的消息!请查看我的更新答案。 - Benjamin Gruenbaum
3个回答

16

Python是一种编程语言,你无法直接运行编程语言的“本地代码”。但是,你可以在浏览器中运行用Python编写的程序。

那么我能否在浏览器中运行Python代码呢?

2013年6月更新:现在Brython项目可以让你在浏览器中运行Python 3代码。你可以在http://www.brython.info/上查看它。

你可以使用使用ECMAScripten在JavaScript中运行LLVM。这意味着你可以将C-Python从C编译为JavaScript,并在浏览器中运行JS。ECMAScripten维基百科链接提供了更多关于如何做到这一点的细节。

(这里是一个在浏览器中运行Python REPL的实时演示

还有一些适用于浏览器的Python 2实现

但我应该这样做吗?

可能不应该,JavaScript和Python在许多方面都很相似,两者都是动态的、紧凑的、聪明的。如果你知道Python,你可以很快学会JavaScript。

如果你喜欢Python的语法,你可能想考虑CoffeeScript,它具有类似于Python(以及有些类似于Ruby)的语法,并且能够透明地编译为JavaScript。

在浏览器中运行Python的解决方案也往往会慢得多,至少在更多的浏览器支持asm.js之前是这样的(目前只有Firefox Nightly支持)。


谢谢你的回复,本杰明!我知道你可能因为很多原因而不应该这样做,但如果有简单的方法,我会采用它。我开发许多语言,JavaScript 可能是最容易学习的语言之一,但我不喜欢它的某些概念(例如:类的实现方式-继承很困难),这就是为什么我想看看是否可以用 Python 实现一些东西。正如我所说,我不想开始任何讨论,只是看看有什么东西可以利用。 - user2210287
JavaScript中的继承非常简单,我喜欢Python处理基于类的继承的方式,但是在我看来JavaScript更简单。var some2dPoint = {x:3,y:5}; var now3d = Object.create(some2dPoint);now3d.z=10。一定要试试CoffeeScript,它以一种让你感到更舒适的方式处理类。这里有一个关于CS类的教程:http://arcturo.github.io/library/coffeescript/03_classes.html。还可以查看https://code.google.com/p/brython/,尽管我无法将其与现有代码库正确配合使用。我真的认为你可以学会享受JavaScript,只是我的个人看法。 - Benjamin Gruenbaum
另外值得一提的是,虽然您是原帖发布者并且我正在回答您的问题,即使您对“为什么应该在SO上运行Python”之类的东西不感兴趣,SO也是一个社区网站,我认为很多查找在浏览器中运行Python的人应该知道这并不总是最好的选择。我认为JS非常有竞争力(有些人甚至会说它和Python一样甚至更好),如果您尝试一下,我相信您会真正喜欢它,它与Python有所不同,但是它是为不同的事情而设计的。浏览器是一个异步和动态环境,而JS就是为此而构建的。 - Benjamin Gruenbaum
目前还没有完成,仍在进行更多的研究。 - user2210287
实际上,Brython的想法涵盖了与coffescript相同的用例,不同之处在于(1)它不会发明一种新语言,(2)截至2014年,它确实几乎公开了所有Python3标准库——其中有很多细节,在javascript中需要获取其他数十个项目才能使用。 - jsbueno

1

现在,这是可能的。你可以在浏览器中运行Python。


0

我相信你可以使用Javascript创建一个编译器,来运行简单的Python代码。可能会有一些可用的程序可以完成这个任务。尽管如此,直接通过Web浏览器运行Python是不可能的。


已经有几个Python解释器在JavaScript中,包括PyPy.jsSkulpt - Anderson Green

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接