views:

1233

answers:

5

Is there a way to execute python code in a browser, other than using Jython and an applet?

The execution does not have to deal with anything related to graphics. For example, just sum all the digits of a binary 1Gb file (chosen by the browser user) and then return the result to the server.

I am aware that python can be executed remotely outside a browser, but my requirement is to be done inside a browser.

For sure, I take for granted the user will keep the right to execute or not, and will be asked to do so, and all this security stuff... but that is not my question.

+3  A: 

No, you can't.

Modern browsers only run javascript or plugins. You can develop your own python plugin and convince people to download and run it, but I guess that falls to the "not inside the browser" category.

nosklo
Silverlight, Flash, Java (Jython) are all plugins - the browser *DOES NOT* execute python.
nosklo
It may fall in "inside browser" category for me if there is such a plugin that the browser can launch.
proportional
you can write a plugin to run python. convincing the user to install it is another matter.
nosklo
Yes, of course. As I stated in my question, that worries me not.
proportional
+2  A: 

You mean client-side?

Sure you can! But you need to have python installed on the client first.

The linked book describes that in order to use client-side Active Scripting, you can test it with the a simple html file.

<html><body>
<script language='Python'>alert("Hello, Python!")</script>
</body></html>

In the old version refered in that book (Python programming on Win32 By Mark Hammond, Andy Robinson) it says that you need to install the Python Win32 extensions, and it will automatically register Python Active Scripting. Should you do it manually, you have to run the script python\win32comext\axscript\client\pyscript.py.

voyager
Don't know status for FF, and can't test as I blow my Windows VM :S
voyager
Good try, but in page 438 of your reference says that IE won't let python open nor local files neither sockets. I wonder what happens with other browsers not in the Redmond side.
proportional
You are correct, you will be sandboxed, just like with `JScript` and `VBScript`. You can use it as a replacement for `javascript`, but I don't think it's worth the effort. You still have to use your server for low level (file, socket, etc.) operations. Can I ask what is it you are looking for? Why it has to run `client side` on a browser? May be you need another tool. Either a client application/script or `server side` code.
voyager
+1  A: 

By accident I was listening to Hanselminutes where he mentioned about Gestalt project. This is a solution to integrate a languages as IronRuby and IronPython in browser via Silverlight.

So I think the answer is no if you don't have any special plugins.

Jenea
+4  A: 

The Pyjamas project has a compiler called pyjs which turns Python code into Javascript.

Alexander Ljungberg
Look at proportional's comment in my answer.
voyager
Yep, he'd run into the sandbox problem.
Alexander Ljungberg
+1  A: 

nosklo's answer is wrong: pyxpcomext for firefox adds language="python" support to script tags. yes it's a whopping 10mb plugin, but that's life. i think it's best if you refer to http://wiki.python.org/moin/WebBrowserProgramming because that is where all known documented links between python and web browser technology are recorded: you can take your pick, there.