Лучший способ интегрировать Python и JavaScript? - PullRequest
59 голосов
/ 26 марта 2009

Можно ли интегрировать Python и JavaScript? Например, представьте, что вы хотите иметь возможность определять классы в JavaScript и использовать их из Python (или наоборот). Если так, то как лучше? Меня интересует не только то, возможно ли это, но и если кто-то сделал это в рамках "серьезного" проекта или продукта .

Я предполагаю, что было бы возможно использовать Jython и Rhino , например, но мне интересно, действительно ли кто-нибудь когда-либо делал это, и если решения для других платформ (особенно CPython ).

Ответы [ 12 ]

25 голосов
/ 26 марта 2009

Как насчет pyjs ?

С вышеуказанного сайта:

pyjs - это платформа для разработки многофункциональных интернет-приложений (RIA) для веб-приложений и настольных компьютеров. С помощью pyjs вы можете писать свои веб-приложения на JavaScript полностью на Python.

18 голосов
/ 26 марта 2009

Вот что-то, оболочка Python вокруг интерпретатора SeaMonkey Javascript ... http://pypi.python.org/pypi/python-spidermonkey

13 голосов
/ 23 августа 2016

Этот вопрос не совсем молодой, но есть несколько альтернатив:

  • " Skulpt - это полностью браузерная реализация Python."
  • Brython - «Реализация Python 3 для веб-программирования на стороне клиента»
  • RapydScript - «Python-подобный JavaScript без лишних издержек или излишеств»
  • Transcrypt - «Компонент Lean и Mean Python 3.6 to JavaScript с множественным наследованием, исходными картами, статической проверкой типов и выборочной перегрузкой операторов» (также на Github )
9 голосов
/ 08 апреля 2009

есть два проекта, которые позволяют «очевидный» переход между объектами python и объектами javascript, с «очевидными» переводами из int или float в Number и str или unicode в String: PyV8 и как единое целое писатель уже упомянул: python-spidermonkey .

На самом деле есть две реализации pyv8 - первоначальный эксперимент был выполнен Себастьеном Луизелем, а второй (в активной разработке) - Флайером Лю.

Мой интерес к этим проектам состоял в том, чтобы связать их с пижамами , компилятором python-to-javascript, для создания ускорителя Python JIT.

так что там много всего - все зависит от того, что вы хотите сделать.

6 голосов
/ 26 марта 2009

Если вы просто заинтересованы в совместном использовании сложных типов данных между javascript и python, посмотрите jsonpickle . Он включает в себя стандартные библиотеки Python JSON, но имеет некоторые умения в сериализации и десериализации классов Python и других типов данных.

Многие проекты Google App Engine использовали эту библиотеку. Joose и FirePython оба включают jsonpickle.

3 голосов
/ 01 августа 2014

PyExecJS может использовать каждый из PyV8, Node, JavaScriptCore, SpiderMonkey, JScript.

>>> import execjs
>>> execjs.eval("'red yellow blue'.split(' ')")
['red', 'yellow', 'blue']
>>> execjs.get().name
'Node.js (V8)'
2 голосов
/ 26 марта 2009

Возможно, вы захотите проверить проект PyPy - у них есть компилятор Python to (что угодно), включая Python to Javascript, C и llvm. Это позволяет вам писать свой код на Python, а затем компилировать его в Javascript по своему желанию.

http://codespeak.net/pypy

Также ознакомьтесь с информационным блогом:

http://morepypy.blogspot.com/

К сожалению, вы не можете конвертировать Javascript в Python таким образом. Похоже, что в целом это работает очень хорошо: раньше у них была онлайн-версия игры Bub'n'Bros на Javascript (сделанная из скомпилированного Python) (хотя сервер некоторое время не работал)

http://bub -n-bros.sourceforge.net

2 голосов
/ 26 марта 2009

Существует мост, основанный на JavaScriptCore (из WebKit), но он довольно неполный: http://code.google.com/p/pyjscore/

1 голос
/ 15 марта 2018

Многие из этих проектов, упомянутых выше, мертвы или умирают, им не хватает активности и интереса со стороны автора. Интересно проследить, как развивается эта сфера.

Для справки: в эпоху реализаций на основе плагинов, в лагере KDE была попытка решить эту проблему с использованием плагинов и неязыкового языка и был создан Kross https://en.wikipedia.org/wiki/Kross_(software) - в моем понимании он никогда не взлетал даже внутри само сообщество.

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

1 голос
/ 13 декабря 2014

Используйте Js2Py для перевода JavaScript в Python, это единственный доступный инструмент:)

...