[問題] 顯示remote docker下matplotlib結果
各位大大好
我有兩台工作機 MacBook 與 ubuntu 18.04 PC
實際上的開發是Ubuntu下的docker環境為主
在Ubuntu下啟動docker run 帶參數
docker run -it\
--rm\
--gpus=all\
--shm-size=256m\
-v /tmp/.X11-unix:/tmp/.X11-unix\
-e DISPLAY=unix$DISPLAY\
-e GDK_SCALE\
-e GDK_DPI_SCALE\
--name mlds_rl ooxx:torch1.8
則在container中執行python
import numpy as np
import matplotlib.pyplot as plt
y = np.random.rand(30)
plt.plot(y)
plt.show()
可以將圖片顯示在ubuntu畫面
但若是我想是用Macbook遠端ssh進入ubuntu container也想看到
matplotlib plt.show()的結果,該怎麼做呢?
update
經過一下午的研究
修改Dockerfile, 增加下面段落
RUN sudo apt-get install libcairo2-dev pkg-config python3-dev libgirepository1.0-dev -y;\
sudo apt-get install python3-gi gobject-introspection gir1.2-gtk-3.0 xauth -y;\
python3 -m pip install --user pycairo==1.19.1 --no-use-pep517;\
python3 -m pip install --user gobject==0.1.0 PyGObject==3.30.5 --no-use-pep517;\
sudo sed -iE "s/X11Forwarding yes/X11UseLocalhost no\nX11Forwarding yes/" /etc/ssh/sshd_config
docker run的方式不變
》》Mac端要做的只有兩件事
1.安裝xquartz (https://www.xquartz.org/)
2.ssh -X docker@container (一定要帶-X)
就可以做到 mac --> dockerhost --> container,
mac使用ssh直接進入container, run matplotlib相關python code, output在mac端顯示
》》Container端的python code在import matplotlib時要稍稍修正
import matplotlib
matlotlib.use('tkagg') <-- 主要是增加這行 backend 修改
import matplotlib.pyplot as plt
import numpy as np
y = np.random.rand(30)
plt.plot(y)
plt.show()
update
如果 mac->dockerhost(ubuntu)->container 模式工作結束後,
又改成 dockerhost(ubuntu)->container模式
在container中執行 import matplotlib.pyplot as plt 會遇到問題
** (.:5451): WARNING **: Couldn't connect to accessibility bus:
Failed to connect to socket /tmp/dbus-gB2p6CkY1r: Connection refused
修復方式
export NO_AT_BRIDGE=1
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.149.251 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1629252682.A.8CA.html
推
08/18 14:06,
2年前
, 1F
08/18 14:06, 1F
→
08/18 14:44,
2年前
, 2F
08/18 14:44, 2F
→
08/18 14:46,
2年前
, 3F
08/18 14:46, 3F
※ 編輯: Evenni (60.250.149.251 臺灣), 08/19/2021 11:57:28
※ 編輯: Evenni (60.250.149.251 臺灣), 08/19/2021 17:42:07
推
08/20 18:56,
2年前
, 4F
08/20 18:56, 4F