我正在使用Docker解释器在PyCharm中开发一个项目,但是在做大多数事情时我遇到了问题" interactive"的东西。如,
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6])
给出
RuntimeError: Invalid DISPLAY variable
我可以使用
来规避这个问题import matplotlib
matplotlib.use('agg')
摆脱了错误,但是当我执行plt.show()时没有产生绘图。在导入Pandas后尝试调试时,我也得到与线程[pycharm remote python console]: "cannot connect to X server" error with import pandas中相同的错误,但是我无法通过SSH连接到我的docker容器,因此提出的解决方案并不起作用。我已经看到了传递" -e DISPLAY = $ DISPLAY"的解决方案。进入"码头运行"命令,但我不相信PyCharm有任何使用Docker解释器指定命令行参数的功能。有没有办法设置某种永久的,通用的X11转发(如果这确实是根本原因),以便这些图将适当地传递到我本地机器上的DISPLAY?更一般地说,有没有人在PyCharm中成功使用matplotlib与Docker解释器?
答案 0 :(得分:2)
这是the solution我想出来的。我希望这有助于其他人。步骤如下:
安装并运行Socat
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\“$ DISPLAY \”
安装并运行XQuartz(可能已安装)
运行/调试项目会生成一个新的石英弹出窗口,显示绘制的图形,无需保存到图像等。
答案 1 :(得分:1)
在主机上运行xhost +
并将这些选项添加到docker run
:-e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix