VSCode+Docker构建Python开发环境

1 优缺点

1.1 优点

  • 写代码和调试更方便
  • 带语法提示且反应快
  • 支持直接在命令行敲命令运行
  • 一个工具同时开发调试 Python+JS+HTML....
  • 方便在各代码文件间跳转
  • 生态丰富
  • 查找替换方便:可以指定文本或文件夹
  • 可对比文件差异
  • ……

1.2 缺点

  • 配置有点麻烦
  • 需要一些学习成本

2 方法

2.1 前提

假设vscode已正常安装,并且已有支持Python的docker环境

2.2 在Docker内安装ssh服务

2.2.1 进入docker

$ apt-get install openssh-server
$ passwd 输入密码
$ vim /etc/ssh/sshd_config

加入以下三行:
PubkeyAuthentication yes #启用公钥私钥配对认证方式 
PermitRootLogin yes #允许root用户使用ssh登录 
PasswordAuthentication yes

$ /etc/init.d/ssh restart
$ ssh localhost
# 此时从docker可正常连接ssh接口```

2.2.2 退出docker后保存镜像

$ docker commit CONTAINER_ID IMAGE_ID:TAG

2.2.3 再次运行docker时映射端口

在docker run命令中加如下参数:

-p 8822:22 

2.2.4 在docker之外连接

$ ssh [email protected] -p 8822

2.2.5 问题与解决

我遇到的问题是每次都要手动开一下

$ /etc/init.d/ssh restart

可将启动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,添加如下内容:

Host 192.168.1.201
  HostName 192.168.1.201
  Port 8822
  User root

保存后,左侧远程资源管理器内容被刷新,然后点该项右侧的Connect to Host...并按提示输入密码后,即可正常连接。

2.5 运行代码

写一个简单的python文件,如:

print("abcde")

然后点击左侧运行按钮,选择运行和调试,此时会提示安装Python扩展,我选择了第一个推荐"Python"。
安装后再运行,选择Python,提示设置launch.json;在左侧面板选择创建launch.json,然后选择Python,保持默认选项即可。
此时,即可通过运行按钮(播放键)直接运行程序,运行结果在下方的终端面板中显示。

2.6 Jupyter Notebook

2.6.1 基本用法

目前Jupyter已合入python插件,安装之后即可使用,输代码后点左侧的小箭头运行即可。
这样在vscode中画图的问题也解决了。
VSCode+Docker构建Python开发环境_第1张图片
(我之前的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 修改左侧字体大小

$ sudo vi /usr/share/code/resources/app/out/vs/workbench/workbench.desktop.main.css

找 .monaco-workbench .part>.content,将其字体大小改为16

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官方教程

你可能感兴趣的:(工具,vscode,docker,python)