在VS Code中进行远程Python开发

今天在PyCon 2019大会上,微软的Python和Visual Studio Code团队宣布了在Visual Studio Code中进行远程开发这一功能,这让Visual Studio Code开发者可以远程地在运行在docker容器、远程SSH主机和Linux的Windows 子系统中的开发设置环境中运行他们的代码和工具,而你仍然可以在本地获得丰富和无缝的用户体验。

这项支持目前在Visual Studio Code内部构建版本中是可用的,并由Visual Studio Code市场中的三个新远程扩展启用:

  • Remote-Containers: 在本地docker容器内运行的工作区中进行开发
  • Remote-SSH: 通过一个SSH连接来在运行在远程主机上的工作区中进行开发
  • Remote-WSL: 在Windows中的Linux子系统内运行的工作区中进行开发

要开始下载这个远程扩展包,请查看Visual Studio Code Remote文档,然后立即开始! 快速查看下面的视频进行浏览,并继续阅读了解更多!

能够使用WSL和远程Python解释器一直是我们的Python Extension GitHub页面上请求最多的特性。我们从Python用户那里听说了许多需要在远程工作区中工作的不同原因: 在使用SSH的情况下,他们的代码需要访问大量数据、计算、GPU或其他资源; 使用Docker时,他们需要能够在具有复杂依赖关系的开发环境之间进行创建和切换; 使用WSL时,他们可能需要只适用于Linux环境的工具和包。

通过远程开发,我们已经使用远程Python解释器和其他工具启用了所有这些场景及其他场景: Visual Studio Code的UI运行在你的本地机器上,并连接到一个远程托管你扩展的远程服务器。这也启用了自动补全、调试、终端、源代码控制、安装扩展等功能,几乎Visual Studio Code中的所有内容都可以在远程机器上无缝运行,你就像在本地开发工作区工作一样。

远程Docker工作区和Dev容器

Docker容器是创建可重用开发环境的一种流行方法,你无需在本地机器上安装复杂的依赖项。这还允许新的团队成员通过安装docker并在Visual Studio Code中打开你的工作区来复制你的环境。

“Remote - Containers”扩展允许Visual Studio Code使用dev容器的概念在此开发环境中无缝运行。Dev容器由一个.devcontainer文件夹中的文件定义,它会告诉Visual Studio Code如何为该工作区创建一个Docker环境。你可以使用一个Dockerfile来创建一个单个容器或一个运行多个容器的docker-compose.yml。

要开始在docker容器中进行开发,请运行Remote-Containers: Open Folder in Containers…命令,然后浏览到本地机器上的一个文件夹。如果在工作区根目录中找到一个.devcontainer文件夹,Visual Studio Code将使用现有的dev容器定义来创建该dev容器。

如果容器定义不存在,系统将提示你为该工作区创建一个新的dev容器。我们为Python开发人员提供了内置定义,让你可以从Python 2/3、Python3+Postgres、Miniconda和Anaconda开始:

在VS Code中进行远程Python开发

一旦你打开一个dev容器,Visual Studio Code将创建该docker镜像,然后安装一个轻量级远程服务器,瞧,你现在就可以在dev容器中编码了! 远程服务器允许Visual Studio Code远程地运行扩展,这样几乎所有的功能都会像在本地环境中一样工作。

你的文件是以卷挂载到容器中的,所以你可以打开文件,开始编辑代码,并获得智能感知和自动完成:

在VS Code中进行远程Python开发

你可以开始调试,设置断点,并逐步运行代码:

在VS Code中进行远程Python开发

你可以在Python互动窗口中运行单元格和查看图形输出:

在VS Code中进行远程Python开发

并且当你打开终端时,你使用的是容器内的终端!

在VS Code中进行远程Python开发

除了创建和使用dev容器定义,你还可以使用Docker扩展,并在一个容器上右击,选择Attach Visual Studio Code来将Visual Studio Code附加到任何运行的docker容器上:

在VS Code中进行远程Python开发

当附加到一个现有容器时,你可能会丢失Visual Studio Code使用的一些依赖项,因此如果你遇到问题,请检查我们的vscode-dev-containers 仓库中的示例容器定义,以便将依赖项添加到你的Dockerfile。

如果你想返回到正常的本地视图,你可以运行Remote-Containers: Reopen Folder Locally命令。你的所有更改都将通过一个卷挂载驱动器保存到你的工作区,因此可以在本地视图中使用。

远程 SSH 工作区

Python开发人员的另一个常见设置是,他们的开发环境运行在远程机器上,这通常是因为远程机器可以访问本地机器上不可用的资源或数据集。与docker场景类似,你可以使用“Remote-SSH”扩展在一个SSH连接上打开远程工作区。

开始之前,首先确保你可以从命令行ssh到远程机器,然后运行Remote-SSH: New Window命令,并输入你的目标ssh主机:

在VS Code中进行远程Python开发

如果你配置了SSH主机,它们将随时在远程SSH活动栏可用,以便轻松连接:

在VS Code中进行远程Python开发

Visual Studio Code将重新打开,然后在SSH主机上安装远程服务器。然后,你可以在这个远程机器上打开一个文件夹:

在VS Code中进行远程Python开发

然后你就可以立即开始编辑和调试代码了! 在这种情况下,任何源代码都不需要是本地的,所有编辑和调试功能都由远程服务器提供。

在VS Code中进行远程Python开发

远程WSL 工作区

Linux的Windows子系统允许你运行Windows中运行的本机Linux bash shell,类似于其他场景。“Remote-WSL”扩展允许Visual Studio Code UI在你的windows桌面运行,而Visual Studio Code 远程服务器则在Linux子系统中运行扩展。

要开始使用Remote WSL,请运行Remote-WSL: New Window命令:

在VS Code中进行远程Python开发

然后,它将安装Visual Studio Code远程服务器,并为你提供一个运行在WSL上下文中的新的Visual Studio Code窗口。

你可以点击Open Folder...,它会允许你在这个Linux文件系统中打开一个文件夹:

在VS Code中进行远程Python开发

或者,你可以通过从wsl提示符输入“code-insiders .”命令来直接在WSL中打开一个文件夹。

然后,你就可以像在其他远程开发环境中一样来创建文件、编辑代码、打开WSL终端和进行调试:

在VS Code中进行远程Python开发

现在开始吧

我们对这次更新为Python开发人员在Visual Studio Code中解锁的功能感到兴奋,要使用这些功能,请查看Visual Studio Code Remote文档,并/或试用我们的一些示例应用程序:

  • Python hello world 示例
  • 推特应用程序: Django + Postgres
  • Anaconda 容器

请记得在我们的vscode-remote-release GitHub页面上提交问题,让我们知道关于远程扩展的任何问题或反馈。

注:我这有个学习Python基地,里面有很多学习资料,感兴趣的+Q群:895817687

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容