1

わかりましたので、ブラウザで単純な python repl を試しています。Pythonコードをテキスト入力に入れ、「送信」ボタンを押して、それを評価した結果を返したいと思います。

私は、stdlibeval関数を呼び出して送り返す1つのルートでフラスコを使用していました。また、単純なサーバー/クライアントのセットアップでzeroMQを使用していました。何か物足りない気がしますが…

この種のことを行うための標準的な方法はどのようになっていますか? repl.itsculptなどのプロジェクトはそれを行っていますが、JavaScript にコンパイルしています。IpythonノートブックはzeroMQを使用していますが、彼らがそれを行っている正確な方法はわかりませんexec

多くの言語をサポートする Web ページに repl を埋め込みたいと考えていましたが、最初は Python から始めています。たぶん、他の誰かがすでにこれをやっていますか?どんな助けでも大歓迎です!

4

1 に答える 1

1

IPython ノートブック webapp は、カーネルと通信するために ZMQ とのブリッジとして機能するトルネード Web サーバーと話し合います。カーネルは、python、julia、haskell、OCamel、nodejs、ruby、scala など、私が知っているものです。カーネルがメッセージ仕様に準拠している限り(そして、 IHaskell を書いた人物によるメッセージング プロトコルに関する素敵なブログ投稿)、文字列を送信/結果を受信するだけのフロントエンドは透過的です。

よりスタンドアロンのバージョンが必要な場合は、Min の単一セルのデモを見ることができます。しかし、基本的には、IPythonkernel.jsをページに埋め込んで、 IPython.kernel.execute(code, callbacks).

これがカーネルでどのように機能するかは、言語ごとに異なります。Python は、特定の名前空間で多くのコードを評価できるため、ネイティブにそうすることができます。他の言語については、正確にはわかりません。

再発明する代わりに、IPython のメッセージ仕様と再利用可能なコンポーネントを再利用することで、sens が作成されると思います[1]。

また、信頼できる情報源から、IPython はさまざまな言語の言語でノートブックを起動する機能が必要であり、ブラウザで REPL (QtConsole など) よりも近いものも必要であると聞いています[2]。

[1] 私は偏見があります。私は IPython 開発者です。

[2] これについてはよく話しますが、最初に取り除きたい Python 主義があります。

于 2013-10-26T19:43:03.193 に答える