【问题标题】:Is it possible to run a local python script with a remote ssh interpreter via Visual Studio Code?是否可以通过 Visual Studio Code 使用远程 ssh 解释器运行本地 python 脚本?
【发布时间】:2021-07-02 23:38:45
【问题描述】:

是否可以通过 Visual Studio Code 使用远程 ssh 解释器运行本地 python 脚本?

我在远程 Linux 服务器机器上有一个 python 项目,我想将代码复制到我的本地机器并通过远程 python 解释器对其进行调试,并使用它对数据库等的所有访问和权限。

【问题讨论】:

  • 为什么不在远程服务器上运行,VSC remote 只是远程机器上运行的 VSC 实例的查看器
  • 因为我的项目在 GitLab 上,但访问权限有限,我只能在本地机器上使用 ssh 密钥等访问。
  • 如果我理解正确,您想在本地机器上使用远程服务器设置执行远程服务器代码?
  • 如果我可以评论(我给了赏金)...是的,我想使用 VSCode 进行本地开发,与远程服务器同步文件,并使用远程 python 解释器执行代码——与 PyCharm 常见的方式相同。一般来说,完全远程开发更好,但我有一些麻烦,如果我连接,VSCode 会导致服务器重新启动。似乎我并不孤单github.com/microsoft/vscode-remote-release/issues/2692,但这是另一回事。

标签: python debugging visual-studio-code ssh remote-access


【解决方案1】:

您可以拥有一个完全远程的开发环境,使用Remote SSH 扩展来访问您的远程服务器。目前这是最方便的选择。我想你已经知道这个扩展了。我已经使用它大约一年了,它对我来说很好用。 “重启”问题很可能与“Amazon Linux”(基于 CentOS)内核和内存不足问题的组合有关。确保您有 >4Gb 的可用内存(在远程机器上),因为 VSCode “吃掉”了至少 1Gb。一旦你的内存不足,远程机器很可能会挂起。如果仍有问题,请尝试更改为基于 Ubuntu 的内核。

另一种选择是在远程机器上运行 Jupyter Lab/Notebook。这将允许您在本地浏览器窗口中编辑、运行和调试代码。 (您必须在远程打开一些端口并使用ssh -L 选项进行连接)。

另一种可能的解决方案是使用 Sync-Rsync 或 Remote VSCode 之类的扩展来同步/编辑本地 VSCode 实例中的远程代码,或者您可以使用任何基于 GUI 的 SSH 客户端在本地编辑远程代码。但是这样你就失去了远程运行/调试的能力。

我还要提到 PyCharm(需要专业版)能够在本地编辑文件,然后在远程同步和运行/调试。

【讨论】:

  • 非常感谢您的发言。我希望你在第一段中是对的......但是,我的远程机器不是亚马逊(而是 CentOs),并且现在至少有 33 GB 的可用内存......也许我会切换到 PyCharm
  • 你可以试试 Pycharm 社区版,它在第一个月启用了专业版的所有选项。另外,在远程 SSH 可用之前,我已经使用了web server version of VSCode。它在远程运行 VSCode,并为您提供通过网络浏览器访问它。
【解决方案2】:

如果你有能力在远程服务器上安装rmate,那么你可以使用Remote VSCode。

为此,扩展的文档描述,您为扩展配置 VS Code 用户设置,从命令面板使用 Remote: Start server 启动扩展的服务器,打开到远程服务器的 ssh 连接,远程端口使用 @987654326 转发@,然后你在远程服务器上运行rmate -p 52698 <file>。

这将导致指定的文件在您的本地 VS Code 编辑器中打开,并且对其所做的任何更改都会在您保存它们后很快反映在远程服务器上的副本中。


或者,您可以使用sshfs 来挂载远程目录,就像它是本地目录一样。这是我现在使用本地编辑器编辑远程文件的首选方法。在使用 apt 的系统上,您可以使用 apt install sshfs 安装它。在使用 yum 的系统上,您可以使用 yum install fuse-sshfs 安装它。

安装后,创建一个本地目录,您将在其中挂载远程目录。在本示例中,我们将其命名为 /mnt/remote。继续用 sshfs 挂载它:

sshfs -o allow_other,default_permissions user@example.com:<src dir> /mnt/remote

&lt;src dir&gt; 是您希望本地访问的远程目录的绝对路径。

如果您使用密钥授权,请在default_permissions 之后添加IdentityFile=/home/$USER/.ssh/id_rsa 选项,这是您应该使用的。

您可能需要调整/mnt/remote 的权限,并为上面列出的所有命令使用sudo。

Many other options are detailed in the man pages。还可以考虑使用large_read 来提高效率,使用reconnect,ServerAliveInterval=5,ServerAliveCountMax=15 来提高可靠性。

一旦sshfs 命令成功,您应该会发现远程目录可以作为本地目录/mnt/remote 访问。要在本地编辑远程的内容,只需使用 code /mnt/remote 打开 VS Code 到该目录,然后像在本地一样进行编辑!保存后,您的更改将很快反映在远程文件中。

【讨论】:

  • 谢谢。只是好奇,如何使用远程解释器? (最后,我为迫在眉睫的任务买了 PyCharm,但是这个安装的东西很有帮助....)
  • @PeterFranek 使用我提到的任何一种方法,如果您想要本地访问远程解释器,您可以使用 SSH 终端打开它。要跨多个连接保持终端,您可以使用tmux 或其他类似程序。
猜你喜欢
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 2016-05-23
相关资源
最近更新 更多