3

LAN 上に IPython Notebook サーバーを実行したいコンピューターがあります。コンピューターはヘッドレスなので、SSH を使用してのみこのコンピューターにアクセスできます。画面から IPython Notebook を起動してからデタッチしようとしましたが、X サーバー エラーでカーネルが再起動します。

具体的には、次のことを行いました。

  • リモート ボックスに SSH で接続します。 ssh -X 1.1.1.1
  • 最後の画面を開始または再接続:screen -RD
  • ノートブックを起動ipython notebook
  • デタッチしてログアウト: ctrl-a-d, exit

リモート ノートブック サーバーは、ログアウトするまで正常に動作し、matplotlib プロットを作成してみます。どの時点で私は得る

Kernel Restarting
The kernel appears to have died. It will restart automatically.

クライアントの Web ブラウザから

-c: cannot connect to X server localhost:10.0
2013-08-01 10:28:48.072 [NotebookApp] KernelRestarter: restarting kernel (1/5)
WARNING:root:kernel 6e0f5395-6ba7-44c8-912f-1e736dd66517 restarted

サーバー上。

X リソースが不足しているため、ログアウトするとすぐに Notebook がプロットできないようです。誰にもこれに対する解決策がありますか?

4

3 に答える 3

4

Ipython は、 で作成した X セッションでプロット (またはtraitsuiUI 要素などの他の X グラフィック) を作成していssh -Xます。ログアウトすると、その X セッションとともに ssh トンネルが閉じられるため、エラーが発生します。ssh トンネルがなければ、プロットはあなたに到達する方法がありません。

サーバー上にプロットなどを表示するための物理端末がない場合、IPython ノートブックにプロットをインラインで表示するように指示することで、matplotlib プロットを表示できます。現在のバージョンの ipython では、プロットは静的 png であることに注意してください。そのようなことをする方法があるかどうかわかりませんかtraitsui

これを行うにはいくつかの方法があります。

  • でpylabモジュールをインポートします%pylab inline
  • import matplotlib with %matplotlib inline(これが古いバージョンで利用可能かどうかは不明)
  • でipythonを実行するipython notebook --pylab=inline
  • 常に pylab inline を使用するipython profile createようにipython を構成ipython_notebook_config.pyします~/.config/ipython/profile_default/
于 2013-09-20T01:58:14.697 に答える
0

これらのカーネルの再起動は、ノートブックに traitsui モジュールをインポートしたときにのみ発生するようです。特に、次のインポートでエラーが発生します。

from traitsui.api import *
from traitsui.menu import *

解決策は、traitsui モジュールをインポートする前に、traitsui のバックエンドを変更することです。

from traits.etsconfig.api import ETSConfig
ETSConfig.toolkit = 'null'

編集: traitsui 機能は ssh 全体で使用されていませんでした。それはより大きなモジュールの一部に過ぎませんでした。

于 2013-08-05T14:40:08.910 に答える