Вызов Python из JavaScript

Есть ли простой способ вызвать библиотеки Python из JavaScript? Особенно изнутри расширения Firefox.

Хорошая возможность компилировать чистую библиотеку Python также будет отличной. Я посмотрел на Pyjamas, но, похоже, он предлагает лишь частичную поддержку Python.

Ответ 1

Вам понадобится браузер с встроенной поддержкой python (но это не "стандарт", следовательно, это победит цель использования webapp - если вам нужен специальный клиент, вы можете лучше использовать классический gui) или способ перевода Python на Javascript; там было три варианта для этого:

  • Пижамы
  • Скульптура
  • PyPy

Наоборот, если вы просто хотите расширить Firefox, взгляните на это: http://pyxpcomext.mozdev.org/

Ответ 2

Вы можете посмотреть Titanium Desktop. Он имеет отличный API, который позволяет вам легко вызывать Python из Javascript.

Например:

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

Он использует мост Kroll Python для расширения и вызова функций с помощью простых тегов <script>.

Вы можете легко передавать целые числа, числа с плавающей запятой, булевы, объекты, все это там.

В вышеупомянутой ссылке есть несколько примеров ее простого использования, и, естественно, она доступна для загрузки.:)

Ответ 3

Это не будет сделано в расширении, но скорее это плагин (иногда неясная, но заметная разница).

Я не знаю о каких-либо плагинах прямо сейчас, когда выставляете Python напрямую, но есть несколько способов, о которых я слышал, чтобы заставить его работать косвенно. Например: вы можете получить IronPython (версия с расширением .Net) проходящий через Silverlight. Там также статья slashdot о предмете, который вы можете найти интересным.

В противном случае нет. Я не верю, что есть прямой способ сделать это сегодня. Не то чтобы я его не любил.:)

Ответ 4

Вы можете создать собственное расширение Firefox, которое использует libpython для запуска вашего кода на Python. Исходя из этого, экспортируйте интерфейс, который позволяет вашему Javascript-коду вызывать python, запущенный в вашем расширении.

Похоже, что есть расширение python Firefox, которое может позволить вам делать то, что вы хотите: 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%, но я действительно знаю, что в Google Chrome вы не можете: вам понадобится:

  • HTTP-шлюз какого-либо типа
  • плагин NPAPI

Ситуация, вероятно, будет такой же в случае Firefox из-за проблем с безопасностью.