我正在运行一个包含Python/JupyterLab和所有依赖项的容器。我使用以下命令启动它:
docker run --rm -it -p 8888:8888 \
--mount type=bind,source=/project,target=/work \
python-3.9.1-jupyterlab
它启动了JupyterLab,我可以通过浏览器连接。一切正常。
现在我正在尝试使用VSCode作为Python IDE。附加一个来自VSCode的Shell到容器中非常有帮助,这样我可以在一个地方运行iPython并编辑我的代码。我从VSCode Docker扩展中运行“attach shell”:
docker exec -it {containerID} bash <
然后我打开了一个iPython shell:
jo@:~/work $ ipython --pylab
Python 3.9.1
IPython 7.20.0 -- An enhanced Interactive Python.
Using matplotlib backend: agg
In [1]: matplotlib.get_backend()
Out[1]: 'agg'
In [2]: import matplotlib.pyplot as plt
In [3]: plt.plot([1.6, 2.7])
Out[3]: [<matplotlib.lines.Line2D at 0x7f5ed0ed8d30>]
In [4]: plt.show()
In [5]: %matplotlib inline
In [6]: plt.plot([1.6, 2.7])
Out[6]: [<matplotlib.lines.Line2D at 0x7f5ed0df5d60>]
<Figure size 432x288 with 1 Axes>
In [7]: plt.show()
我看不到任何图形。我尝试使用不同的后端(默认为“agg”)进行渲染。我想这是因为内核(在容器上执行)无法使用主机图形(即内核可以呈现图形但无法显示它们)。也许我没有正确映射主机/容器端口。
能否有人提供一些尝试的指导? 这是我正在使用的容器的镜像。