【问题标题】:Calling Python from JavaScript从 JavaScript 调用 Python
【发布时间】:2009-12-14 14:00:18
【问题描述】:

有没有一种从 JavaScript 调用 Python 库的简单方法?尤其是在 Firefox 扩展内部。

编译纯 Python 库的好选择也很棒。我查看了Pyjamas,但它似乎只提供对 Python 的部分支持。

【问题讨论】:

  • 你问的是浏览器端的 Python 吗?谁在用户的浏览器中安装那个 Python?这将如何运作?
  • 澄清一下,您所指的 Javascript — 您是指 Web 服务器上网页中的 Javascript,还是您想用 Javascript/Python 混合编写 Firefox 扩展?
  • 我想使用 python 库编写/增强现有的 firefox 扩展。

标签: javascript python


【解决方案1】:

您不妨查看Titanium Desktop。它有一个很棒的 AP​​I,可以让你在 Javascript 中轻松调用 Python。

例如:

<script type="text/python" src="myfile.py"/>

它使用 Kroll Python Bridge 通过简单的&lt;script&gt; 标签来扩展和调用函数。

您可以轻松传递整数、浮点数、布尔值、对象,应有尽有。

上述链接有几个简单用法的例子,自然可以下载。 :)

【讨论】:

    【解决方案2】:

    您要么需要具有内置 python 支持的浏览器(但这不是“标准”,因此它会破坏使用 web 应用程序的目的 - 如果您需要特殊客户端,则可以更好地使用经典 gui),或者一种将 Python 翻译成 Javascript 的方法;当时有三种选择:

    • 睡衣
    • 雕刻
    • PyPy

    相反,如果你只是想扩展 Firefox,看看这个: http://pyxpcomext.mozdev.org/

    【讨论】:

      【解决方案3】:

      这不会在扩展中完成,但更可能是在插件中完成(有时是模糊但显着的区别。)

      我现在不知道有任何插件直接公开 Python,但我听说有几种方法可以使其间接工作。例如:您可以获得 IronPython(.Net 驱动版本)running through Silverlight。还有一个slashdot article,关于您可能会感兴趣的主题。

      否则,不行。我不相信今天有直接的方法可以做到这一点。并不是说我不会爱一个。 :)

      【讨论】:

        【解决方案4】:

        您可以构建一个原生 Firefox 扩展,使用 libpython 来运行您的 python 代码。从中导出一个接口,使您的 Javascript 代码能够调用在您的扩展中运行的 python。

        似乎有一个 Firefox python 扩展可以让你做你想做的事: http://pyxpcomext.mozdev.org/

        【讨论】:

          【解决方案5】:

          看看https://github.com/niedbalski/slurpy Slurpy 项目,它实现了 作为 RPC 机制的双向通信。

                  python = new Slurpy();
                  python.on('loaded', function(evt) {
                      python.sum(10.5,1000, function(response) {
                          alert(response);    
                      });
                  });
          

          【讨论】:

            【解决方案6】:

            我不是 100% 确定,但我确实知道在谷歌浏览器上你不能:你需要任何一个:

            1. 某种 HTTP“网关”
            2. NPAPI 插件

            出于安全考虑,Firefox 案例的情况可能相同。

            【讨论】:

              猜你喜欢
              • 2016-12-30
              • 1970-01-01
              • 2016-03-02
              • 2017-09-25
              • 1970-01-01
              • 1970-01-01
              • 2018-08-31
              • 2018-02-22
              • 2012-10-21
              相关资源
              最近更新 更多