2016-08-25 17 views
9

Zajmuję się tworzeniem projektu w pycharm używając tłumacza Docker, ale używam do problemów podczas wykonywania najbardziej „interaktywne” rzeczy. npforwarding X11 z pycharm i Docker Interpreter

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

daje

RuntimeError: Invalid DISPLAY variable 

mogę obejść to, używając

import matplotlib 
matplotlib.use('agg') 

który pozbywa się błędów, ale nie fabuła jest produkowany, gdy robię plt.show(). I również uzyskać ten sam błąd jak w wątku [pycharm remote python console]: "cannot connect to X server" error with import pandas podczas próby debugowania po zaimportowaniu Pandy, ale nie mogę zalogować się na moim Döcker pojemnika, więc rozwiązanie proponowane tam nie działa. Widziałem rozwiązanie przekazywania "-e DISPLAY = $ DISPLAY" do polecenia "docker run", ale nie wierzę, że PyCharm ma jakąkolwiek funkcjonalność do określania parametrów wiersza polecenia, jak to z interpreterem Docker. Czy jest jakiś sposób na stworzenie stałego, ogólnego przekazu X11 (jeśli to rzeczywiście jest podstawowa przyczyna), aby działki zostały odpowiednio przekazane do DISPLAY na moim lokalnym komputerze? Bardziej ogólnie, czy ktokolwiek użył Matplotlib z tłumaczem Docker w PyCharm?

+0

Czy można dokować exec do kontenera zamiast do ssh? –

+0

Gdybym ręcznie przędzenia górę pojemnika, ale pycharm to wszystko i jest całkiem czarny box-y o tym - ja widziałem w dokumentacji, że tworzy nowy pojemnik za każdym razem, chociaż, tak Exec pewno nie będzie działać. –

+0

Czy udało Ci się znaleźć rozwiązanie tego problemu? –

Odpowiedz

1

Run xhost + na komputerze i dodać te opcje do docker run: -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix

+0

@JP. Czy to rozwiązuje twój problem? – Robert

+0

@Robert Jeszcze nie, ale może to być bardziej związane z moim ograniczonym zrozumieniem integracji pycharm/docker. Wygląda na to, że pycharm obraca swoje własne pojemniki z obrazów (zobacz komentarz OP na temat parametrów), więc nie mam możliwości ustawienia informacji o środowisku/objętości zgodnie z tym komentarzem –

+0

Kontynuacja poprzedniego komentarza. Właśnie zauważyłem, że mogę dodać flagi doków za pomocą konfiguracji debugowania/uruchamiania w pycharm. Jutro się z tym pobiorę i zgłoś się –

2

Oto the solution wymyśliłem. Mam nadzieję, że to pomoże innym. Kroki są następujące:

  1. Zainstaluj i uruchom socat

    socat TCP-POSŁUCHAJ: 6000, reuseaddr, widelec UNIX-KLIENT: \ "$ DISPLAY \"

  2. Zainstaluj i uruchom XQuartz (prawdopodobnie już zainstalowany)

  3. zmodyfikować konfigurację/debug run pycharm dla swojego projektu, ustawienie odpowiedniego adresu zmiennej wyświetlaczu (w moim przypadku 192.168.0.6:0)

Uruchamianie/debugowanie projektu powoduje pojawienie się nowego kwarcowego wyskakującego okna z wykreślonym wykresem, bez konieczności zapisywania go w obrazie itp.