1 优缺点
1.1 优点
- 写代码和调试更方便
- 带语法提示且反应快
- 支持直接在命令行敲命令运行
- 一个工具同时开发调试 Python+JS+HTML....
- 方便在各代码文件间跳转
- 生态丰富
- 查找替换方便:可以指定文本或文件夹
- 可对比文件差异
- ……
1.2 缺点
- 配置有点麻烦
- 需要一些学习成本
2 方法
2.1 前提
假设vscode已正常安装,并且已有支持Python的docker环境
2.2 在Docker内安装ssh服务
2.2.1 进入docker
2.2.2 退出docker后保存镜像
2.2.3 再次运行docker时映射端口
在docker run命令中加如下参数:
2.2.4 在docker之外连接
2.2.5 问题与解决
我遇到的问题是每次都要手动开一下
可将启动ssh加在/root/.bashrc中,或者build docker image时加入启动脚本。
2.3 使用VSCode连接本地container
调出扩展面板(Ctrl+Shift+X)
安装:Remote Development 插件
打开命令面板(Ctrl+Shift+P)
输入remote-ssh,选择open Configuration file,按提示输入主机地址,用户名,密码等信息(一个设置文件中允许同时添加多个连接)。
此时,左侧出现"远程资源管理器选项卡",点连接右侧的attach remote container可连接远程主机。
登录后看起来就像是打开了一个本地项目,选择文件夹作为工作目录。
同时打开多个项目时,右键点击contrainer,选择attach in new window。
2.4 连接远程主机上的docker container
连接远程主机中的docker,操作如下:
首先,远程主机端也需要启动docker并向外暴露端口如8822。
在左侧打开远程资源管理器,在第二个选项卡选择SSH Target。
打开命令面板(Ctrl+Shift+P),输入remote-ssh,选择open Configuration file,添加如下内容:
保存后,左侧远程资源管理器内容被刷新,然后点该项右侧的Connect to Host...并按提示输入密码后,即可正常连接。
2.5 运行代码
写一个简单的python文件,如:
然后点击左侧运行按钮,选择运行和调试,此时会提示安装Python扩展,我选择了第一个推荐"Python"。
安装后再运行,选择Python,提示设置launch.json;在左侧面板选择创建launch.json,然后选择Python,保持默认选项即可。
此时,即可通过运行按钮(播放键)直接运行程序,运行结果在下方的终端面板中显示。
2.6 Jupyter Notebook
2.6.1 基本用法
目前Jupyter已合入python插件,安装之后即可使用,输代码后点左侧的小箭头运行即可。
这样在vscode中画图的问题也解决了。
(我之前的docker里安装过jupyter,所以可能跳过了安装jupyter内核ipykernel的过程 pip3 install ipykernel)
2.6.2 使用小技巧
- 单元格右上方的小菜单,可快速设置单元格类型。
- 限制单元格输出行数:在搜索栏找 “output.textLineLimit”,设置行数
- 自动显示Cell的执行时间
- 点上面横版菜单中的outline,在左下角出现markdown大纲视图
- 仍可使用和Jupyter网页版一样的快捷键,几乎没有学习成本
- Shift+回车执行
- dd删除单元
3 小技巧
3.1 推荐主题
浅色:Github Plus theme
3.2 快捷键
- 调出终端面板:Ctrl+左上角的点
- 调出设置:Ctrl+逗号
- 展开单元格输出:Ctrl+K,T
- 调出风格切换:Ctrl+T
- 选择解释器:Ctrl+Shift+P(在多个Python版本间切换)
- 批量注释/取消注释:ctrl+/
3.3 修改左侧字体大小
3.4 开启Ctrl+滚轮缩放
设置->查找: Mouse->Editor Mouse Wheel Zoom->勾选
3.5 文件差异比较
右键选一个文件->选择进行比较
右键选另一个文件->与已选项目进行比较
3.6 发布博客
利用插件可在cnblog发布博客
4 问题与解决
4.1 问题一
- 问题:找不到已安装的Python库
- 原因:这可能是由于docker中安装了多个版本Python环境
- 解答:打开命令面板(Ctrl+Shift+P),Python 选择解析器,选择正确的版本即可
4.2 问题二
- 问题:如何同时打开多个项目
- 解答:每个窗口对应一个项目,打开多个窗口,即可打开多个项目
4.3 问题三
- 问题:为什么我限制了Notebook输出行,但是不管用
- 解答:如果有多个工作位置(比如有本地,有远程),需要分别设置
5 参考
Python基础——VScode + docker进行代码调试20个好看的VSCode主题推荐jupyter-notebooks官方教程