2016-08-25 10 views
9

私はDockerインタプリタを使ってPyCharmでプロジェクトを開発していますが、私はほとんどの "対話的"なことをするときに問題にぶち込まれています。例えば、 PyCharmとDockerインタプリタを使ったX11転送

import matplotlib.pyplot as plt 
plt.plot([1, 2, 3], [4, 5, 6]) 

RuntimeError: Invalid DISPLAY variable 

が、私はエラーを取り除きます。この使用

import matplotlib 
matplotlib.use('agg') 

を回避することができます与えるが、何のプロットは、私がplt.showを行うときに()が生成されません。私はまた、スレッド[pycharm remote python console]: "cannot connect to X server" error with import pandasと同じエラーを取得した後にデバッグしようとしているときに、私はドッカーのコンテナにSSHできないので、そこに提案された解決策は動作しません。私は "docker run"コマンドに "-e DISPLAY = $ DISPLAY"を渡す解決策を見てきましたが、PyCharmにDockerインタプリタでこのようなコマンドラインパラメータを指定する機能はないと思います。プロットがローカルマシン上のDISPLAYに適切に渡されるように、何らかの永続的な汎用X11転送を設定する方法はありますか(根本的な原因である場合)。より一般的にはPyCharmのDockerインタプリタでmatplotlibを使用した人はいますか?ホスト上の

+0

execをsshではなくコンテナにドッキングできますか? –

+0

私は手動でコンテナを回転させたが、PyCharmはこれをすべて行い、それについてはかなり黒いボックスです。ドキュメントでは毎回新しいコンテナを作成していましたが、execは間違いなく動作しません。 –

+0

この問題の解決方法を見つけましたか? –

答えて

1

実行xhost +docker runにこれらのオプションを追加します。-e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix

+0

@JP。これで問題は解決しますか? – Robert

+0

@Robertまだ、pycharm/dockerの統合に関する私の限られた理解とは関係があります。 pycharmがイメージから独自のコンテナを回転させるように見えるので(OPのパラメータに関するコメントを参照)、このコメントごとに環境/ボリューム情報を設定する能力がありません –

+0

前のコメントに従います。私はpycharmのデバッグ/実行コンフィギュレーションを通じてドッカーフラグを追加できることに気付きました。この明日と一緒に遊びに行き、報告する –

2

は、ここで私が思い付いたthe solutionです。私はこれが他人を助けることを望む。手順は次のとおりです。socatに関するTCPは、LISTEN

  1. socatに関する

    をインストールし、実行します:6000、REUSEADDR、フォークUNIX-CLIENT:\ "$表示\"

  2. XQuartzをインストールして実行します(多分すでにインストール済み)

  3. 編集プロジェクトのPyCharm実行/デバッグの構成は、DISPLAY変数に適切なアドレスを設定する(私の場合は192.168.0.6:0)

プロジェクトを実行/デバッグすると、画像に保存する必要なしにプロットされたグラフを表示する新しいクォーツポップアップが表示されます。

関連する問題