将 Spyder 连接到 Docker 容器

Maa*_*eDa 11 python spyder docker

我开始在一家使用 docker 容器开发代码的公司工作,但到目前为止我还没有这方面的经验。我的工作性质是数据科学,因此我发现 Spyder 是此类工作的宝贵工具。

我想将spyder连接到我的同事正在使用的docker容器,但我不确定如何连接,或者这是否可能。我无法找到我能理解的有用材料。

我考虑放弃 Spyder,转而使用 VS Code,因为它能够连接到 docker 容器。但我尝试在 VS Code 中重新创建 Spyder 功能的最佳尝试仅部分成功。

鉴于 Spyder 和 Docker 的流行,我认为这将是一件简单的事情。无论如何,我将非常感谢您提供有关此主题的任何信息。如果您知道任何可以做到这一点的 IDE,我想我可以考虑其他 IDE。我需要的关键功能是启动交互式 python 环境的能力,该环境允许我在 docker 中运行脚本,在脚本运行后保存变量,使用这些变量查找出错的地方并轻松创建绘图,并且可能还可以访问 Spyder 等调试器。

我显然不想让 Dockerfile 膨胀并在容器内安装 Spyder,我希望在外部运行一些东西,但能够连接到 docker 容器并使用那里定义的 python 环境。

以下两个链接对我没有帮助: 将 Spyder 连接到远程主机上 docker 容器中的控制台 将 Spyder 连接到 Docker 容器中的远程 Jupyter Notebook

Maa*_*eDa 5

我不确定有人关心,但我可以简要描述我的解决方案。您可以在 docker 容器中进行设置ssh,然后使用 Spyder 的“连接到现有内核”功能,将 Spyder 用作在 docker 容器中运行的 ipython 内核的前端。此功能允许您通过ssh. 设置起来有点麻烦,所以如果您可以只使用ipython会话并ipdb在容器内完成,那么这可能就是正确的选择。但是,如果您确实在尝试调试某些东西并想要完整的 Spyder 前端,那么以我有限的经验来看,这可以可靠地工作。

如果您尝试这样做,请注意,每当您尝试连接到任何现有内核(无论是否在 Docker 容器中)时,某些版本的 Spyder 似乎都会崩溃。因此,如果最新版本不起作用,请尝试其他版本...

编辑:我现在特别不确定是否有人关心,但自从发布这个问题以来我已经放弃了 Spyder。当尝试依赖 docker 内部的 Spyder 时,花了太长时间才真正开始完成工作,而 Docker 本身在连接远程内核的能力及其调试器功能方面存在缺陷。我在 Windows/Ubuntu 上的体验不一致。相反,如果我不需要进行任何数据可视化,我只需ipython在容器中使用即可。

如果我需要进行数据可视化,我通常会在 docker 中做任何我需要做的事情来获取我需要保存到文件中的数据。然后,我有一个 conda 环境,用于分析文件中的数据。即使在 docker 之外,我也不再使用 Spyder。相反,我在 中编写文件vim,在命令行运行它们,然后breakpoint()在代码中使用它们进行调试;我设置export PYTHONBREAKPOINT=ipdb.set_traceIPython.embed取决于我是否想ipdb单步执行代码,或者我是否只需要在交互式 shell 中的程序中的特定位置尝试一些代码,并在该点定义程序的所有变量。事实上,您可以通过发出来启动ipythonshell 。这对我来说效果很好,并且可能对其他人也有效,具体取决于工作/公司的性质。无需依赖像 Spyder 这样的笨重工具,这是非常自由的。ipdbfrom IPython import embed; embed()