第2章:PyCharm — 你的第一把视觉开发利器
说实话,做计算机视觉开发,选对IDE比选对女朋友还重要(开个玩笑)。我这些年用过VS Code、用过Sublime,甚至还在终端里用Vim硬扛过一段时间。但最后,我还是老老实实回到了PyCharm的怀抱。
为什么?因为PyCharm对Python的支持,尤其是调试功能,真的太强了。你想想看,我们做视觉识别,经常要跟图像数据、模型权重、推理结果打交道。一个不小心,变量值就错了,模型就崩了。这时候,一个好的调试器能救你命。
好,咱们开始吧。
2.1 PyCharm的安装
PyCharm分两个版本:Community(社区版)和Professional(专业版)。
我个人建议:先用社区版。社区版完全免费,功能对于咱们做视觉开发来说,90%的场景都够用。专业版多了远程开发、数据库工具这些,但说实话,前期用不上。
安装步骤很简单:
- 去JetBrains官网下载PyCharm Community Edition
- 双击安装包,一路Next
- 安装时勾选「Add launchers dir to PATH」
- 等待安装完成
注意:我曾经遇到过一个问题——安装时没勾选PATH,结果在终端里打不开PyCharm。后来每次都要手动找安装目录,烦得很。所以这一步千万别省。
2.2 设置字体 — 看得清楚,写得舒服
做视觉开发,代码里经常有各种数字、下划线、括号。字体选不好,眼睛真的会瞎。
我个人习惯用JetBrains Mono。这是JetBrains自家出的字体,专门为代码阅读优化过。0和O、1和l、左括号和右括号,一眼就能分清。
设置方法:
- 打开PyCharm,进入
File → Settings → Editor → Font - Font选JetBrains Mono,Size我设16(看你自己屏幕分辨率)
- Line spacing设1.2,太挤了看着累
小技巧:如果你觉得默认的等宽字体不够清晰,可以试试Fira Code或者Source Code Pro。我团队里有人用Fira Code,说连字效果很酷。但我个人还是喜欢JetBrains Mono,简洁。
2.3 设置快捷键 — 手不离键盘
做视觉开发,调试的时候经常要「下一步」、「步入」、「步出」。如果每次都要用鼠标点,效率太低了。
PyCharm默认的快捷键方案是Windows/Linux和macOS两套。我建议你直接用默认的,别乱改。除非你有特殊习惯。
常用的几个快捷键,我列出来:
| 功能 | Windows/Linux | macOS |
|---|---|---|
| 运行当前文件 | Ctrl + Shift + F10 | Ctrl + Shift + R |
| 调试当前文件 | Shift + F9 | Ctrl + D |
| 单步跳过(Step Over) | F8 | F8 |
| 单步进入(Step Into) | F7 | F7 |
| 恢复程序(Resume) | F9 | F9 |
| 设置/取消断点 | Ctrl + F8 | Cmd + F8 |
嗯,这里要注意:F7和F8的区别。F7是进入函数内部,F8是跳过当前行。调试的时候,如果你想知道某个函数内部发生了什么,就用F7。如果只是想看整体流程,用F8就够了。
2.4 PyCharm常用设置
有几个设置,我建议你装好PyCharm后立刻改掉。不然用起来会很不顺手。
2.4.1 自动导入
做视觉开发,经常要import numpy、cv2、torch这些库。手动敲太累了。
设置路径:File → Settings → Editor → General → Auto Import
勾选:Add unambiguous imports on the fly
这样你只要在代码里写 np.array(),PyCharm会自动帮你补上 import numpy as np。省心。
2.4.2 代码格式化
团队协作的时候,代码风格不统一真的很头疼。有人喜欢4空格缩进,有人喜欢2空格。有人喜欢行尾加分号,有人不加。
我建议你设置好PEP 8规范:
File → Settings → Editor → Code Style → Python
然后勾选Optimize imports和Reformat code。这样每次保存文件,PyCharm会自动帮你整理代码格式。
核心建议:做视觉开发,代码可读性比什么都重要。你写的模型训练脚本,可能半年后自己都看不懂。所以从一开始就养成好习惯。
2.4.3 文件编码
这个坑我踩过。有一次我写了一个中文注释,结果在Linux服务器上跑的时候,全部变成乱码。后来才发现是文件编码没设对。
设置路径:File → Settings → Editor → File Encodings
把Global Encoding和Project Encoding都设为UTF-8。下面的Default encoding for properties files也改成UTF-8。
2.5 调试 — 视觉开发的核心技能
好,终于到重点了。调试,说白了就是「让代码一步一步跑,看它到底在干什么」。
做视觉识别,调试尤其重要。因为图像数据是二维的,模型输出是高维张量。你光看代码,根本看不出哪里错了。
2.5.1 设置断点
断点就是代码里的「暂停点」。程序跑到这一行,就会停下来,让你查看当前所有变量的值。
设置方法:在代码行号旁边点一下,出现红色圆点就对了。
我常用的断点位置:
- 图像读取之后(检查图片是否加载成功)
- 模型推理之前(检查输入张量的形状)
- 模型推理之后(检查输出结果)
- 循环内部(检查每一轮迭代的数据变化)
2.5.2 调试窗口
启动调试后,PyCharm底部会出现调试窗口。里面有这几个关键区域:
- Variables:显示当前所有变量的值。你可以展开列表、字典、张量,看里面的具体内容。
- Watches:你可以手动添加表达式,比如
img.shape,PyCharm会实时计算并显示结果。 - Frames:显示当前的调用栈。如果你在函数A里调用了函数B,这里会显示A→B的路径。
个人经验:调试视觉代码时,我经常在Watches里加 img.shape 和 output.shape。这样一眼就能看出数据维度对不对。有一次我发现模型输出的shape是(1, 1000),但预期应该是(1, 10)。原来是分类数设错了。这种bug,不调试根本发现不了。
2.5.3 条件断点
有时候你不想每次循环都停,只想在某个条件满足时停。比如循环1000次,你只想在第500次时看看数据长什么样。
右键点击断点,选择More,然后输入条件表达式。比如 i == 500。
这样程序只在i等于500时暂停。省时间,也省耐心。
2.5.4 调试小技巧
最后分享几个我常用的调试技巧:
- Step Over (F8):跳过当前行,不进入函数内部。适合你确定函数没问题的时候。
- Step Into (F7):进入函数内部。适合你想看某个函数到底怎么算的。
- Step Out (Shift + F8):跳出当前函数,回到调用处。适合你进错了函数,想赶紧出来。
- Resume (F9):直接跑到下一个断点。适合你确认当前这段没问题,想快速跳到后面。
避坑指南:我曾经在调试一个图像预处理函数时,用了Step Into,结果PyCharm跳进了OpenCV的C++源码里。那叫一个崩溃。后来我学乖了,遇到第三方库的函数,直接用Step Over跳过。除非你真的想研究OpenCV底层实现,否则别进去。
好了,PyCharm的基本配置和调试就讲到这里。下一章,我们会正式搭建Python虚拟环境,然后安装OpenCV、NumPy这些视觉开发必备的库。到时候,你就可以在PyCharm里写第一行视觉代码了。
记住:工欲善其事,必先利其器。把IDE调教好了,后面写代码才会顺手。