
简介这份开源资源面向在 Ubuntu 系统下需要查看与核对 Gerber 文件的 PCB 设计人员、硬件工程师及电子爱好者解决 Linux 平台缺少便捷 Gerber 预览工具的问题。压缩包共 7 个文件约 1015KB以 3 个 so 动态库为核心配合可执行主程序、头文件、脚本与辅助数据文件分别承担图形绘制、事件响应与视图渲染等职责整体结构紧凑便于在本地直接运行或二次开发。已有 638 人学习下载说明其在 Linux 电子设计工具链中有一定实用价值。读者可借此获得一套轻量的 Gerber 查看方案了解各模块的协作方式与脚本调用思路并在此基础上进行功能扩展或排错调试适合具备一定 Linux 操作基础、希望深入理解 Gerber 解析与渲染流程的开发者参考。1. GerberView 开源版安装先把运行环境这关过了上周帮一个做硬件的朋友看板子他发来一个 Gerber 压缩包说“你帮我瞄一眼这层对不对”。我第一反应不是找在线预览而是把本地那套 GerberView 开源版拉起来——这工具我装过不下五台机器每次换系统都得重新踩一遍依赖的坑。它属于那种“装的时候嫌烦、用起来真香”的开源软件离线看图、不传文件、层叠和钻孔都能对。但装不好会怎样最常见的就是启动闪退、打开文件一片空白或者 Python 版本对不上直接报模块缺失。这篇笔记写给两类人一是第一次在本地搭 Gerber 查看环境、想照着走通的新手二是换机器重装、想看清版本取舍和参数差异的熟手。下面从环境清单开始一步步落到能打开文件为止。2. 装前把账算清GerberView 的依赖与版本选择2.1 运行环境三件套Python、GUI 库、图形后端GerberView 开源版本质是一个 Python 桌面应用核心依赖分三层解释器、GUI 框架、图形渲染后端。解释器我一般锁在 Python 3.9 到 3.11 之间3.12 刚出那阵子有几个依赖轮子还没跟上装到一半编译报错的情况我遇到过两次后来就老实退回 3.10。GUI 框架看项目用的是 PyQt5 还是 PySide2这两个不能混装混装的结果是启动时提示“could not find or load the Qt platform plugin”看着像缺库其实是两个 Qt 绑定抢同一个插件目录。图形后端这块容易被忽略。Gerber 文件里大量是矢量线段和圆弧渲染库如果走的是软件光栅化打开大板子会卡到怀疑人生走 OpenGL 后端则流畅很多但对显卡驱动有要求。我的做法是先在虚拟机里用软件后端跑通确认功能没问题再到物理机上开硬件加速。这样出问题能快速判断是代码问题还是驱动问题。组件推荐版本说明Python3.10.x3.9 可用3.12 部分依赖轮子缺失GUI 绑定PyQt5 5.15.x 或 PySide2 5.15.x二选一不可混装图形后端OpenGL 3.3无独显时退回软件渲染包管理pip 23.x venv不建议用系统全局环境2.2 为什么我坚持用虚拟环境而不是全局装全局装 GerberView 的依赖最直接的后果是和系统里其他 Python 项目打架。Qt 绑定尤其敏感你系统里可能已经有某个工具依赖 PyQt5 的另一个小版本GerberView 再装一遍pip 会把版本升上去那个工具就起不来了。用 venv 隔离每个项目一套依赖删目录就等于卸载干净不留残留。创建环境的命令不复杂但路径别带中文和空格这是血泪经验——某些依赖在编译阶段对路径里的非 ASCII 字符处理有问题报错信息还特别隐晦只告诉你“file not found”实际是路径编码的锅。# 在项目目录下创建独立环境解释器显式指定 3.10 python3.10 -m venv .venv # 激活环境Linux/macOS source .venv/bin/activate # 激活环境Windows PowerShell # .venv\Scripts\Activate.ps1 # 确认当前 pip 指向的是虚拟环境内部 which pippython3.10 -m venv .venv里的.venv是目录名习惯用点开头表示隐藏目录不影响功能。激活后which pip应该指向.venv/bin/pip如果还指向/usr/bin/pip说明激活没生效后面装什么都会进全局。Windows 下如果 PowerShell 提示脚本执行策略限制用Set-ExecutionPolicy -Scope CurrentUser RemoteSigned放开当前用户即可不要动机器级策略。2.3 依赖清单怎么读requirements 里的坑开源项目根目录一般有requirements.txt但直接pip install -r一把梭经常翻车。原因有两个一是文件里可能锁了某个老版本和你系统的编译工具链不兼容二是有些依赖是“可选增强”装不上也不影响主功能但 pip 会因为它整体失败。我的习惯是先看文件内容把带的硬锁定项和带的软约束分开。硬锁定的先照装报错再单独处理软约束的让它自己解析。遇到编译型依赖名字里带-dev或者需要 gcc 的先确认系统装了build-essential和对应的头文件包否则会在“Building wheel”阶段卡很久然后失败。# 先只下载不安装看解析出来的版本组合是否合理 pip install --dry-run -r requirements.txt # 确认无误后再实际安装输出详细日志便于排错 pip install -r requirements.txt -v 21 | tee install.log--dry-run是 pip 23 之后比较稳的预演参数能提前暴露版本冲突。-v打开详细日志tee install.log把输出同时存一份装失败时不用凭记忆复现直接翻日志找第一个ERROR行。这个习惯救过我很多次——真正的根因往往在报错堆栈的最上面而不是最后那行“command failed”。3. 正式安装从拉代码到第一次启动3.1 获取源码与目录结构确认开源版一般通过代码仓库获取拿到之后先别急着装花两分钟看目录结构。典型的布局是gerberview/放主程序包requirements.txt在根目录可能还有setup.py或pyproject.toml。如果看到setup.py说明可以用pip install -e .以开发模式安装好处是改代码立即生效坏处是会把包注册进当前环境卸载时要用pip uninstall。我一般先确认入口文件在哪。找__main__.py或者带if __name__ __main__的脚本记下它的相对路径后面启动和排错都要用。有些项目把入口藏在scripts/目录下直接python -m 包名是跑不起来的得用python scripts/xxx.py。# 进入源码目录后先看顶层结构 ls -la # 找入口文件确认启动方式 find . -name __main__.py -o -name *.py | head -20 # 以开发模式安装当前包有 setup.py 或 pyproject.toml 时 pip install -e .pip install -e .末尾的点代表当前目录-e是 editable 的缩写。装完之后pip list里能看到这个包名但实际代码还在源码目录改一行存盘就生效适合需要调参数或者看源码的场景。如果项目没有打包配置就跳过这步直接靠requirements.txt装依赖然后用python 入口文件启动。3.2 依赖安装的两种路径全量与最小全量安装就是把requirements.txt里所有东西装上省心但可能引入用不到的重量级依赖。最小安装是只装主程序 import 到的模块体积小、冲突少但需要你读一遍源码的 import 语句。我通常先走全量跑通之后再考虑精简如果全量装到某个包反复失败就切到最小路径把那个包排除掉看主功能是否受影响。判断某个依赖是否必需看它在源码里是不是在try/except ImportError块里。这种写法说明作者把它当可选增强装不上会降级运行。遇到这种我直接跳过不跟它死磕。# 全量安装失败时记录是哪个包出的问题 pip install -r requirements.txt || echo 全量安装中断检查上方报错 # 最小安装示例只装核心渲染和 GUI 依赖 pip install PyQt55.15.9 numpy shapely第二行里的numpy和shapely是 Gerber 几何运算常见依赖PyQt5是界面框架。版本号5.15.9是我在多个环境验证过比较稳的一个点太新的小版本偶尔和旧代码的 API 对不上。注意这里只是示例实际以项目requirements.txt为准不要照抄版本号到别的项目上。3.3 首次启动与参数配置启动命令取决于入口位置。如果是包结构用python -m 包名如果是单脚本用python 脚本路径。第一次启动建议加环境变量打开 Qt 的调试输出这样界面起不来时能看到具体卡在哪一步。# 包结构启动方式 python -m gerberview # 单脚本启动方式 python gerberview/main.py # 打开 Qt 插件调试界面异常时用 export QT_DEBUG_PLUGINS1 python -m gerberviewQT_DEBUG_PLUGINS1会让 Qt 在加载平台插件时打印详细路径如果看到“loaded library”后面跟着失败基本能定位到是缺libxcb系列库还是插件路径不对。Linux 下最常见的缺失是libxcb-xinerama0装上就好Windows 下则多是 PATH 里混进了别的 Qt 版本把系统 PATH 里非当前环境的 Qt 目录临时移出即可。配置文件一般在用户目录下的隐藏文件夹比如~/.config/gerberview/或~/.gerberview/。第一次启动如果没有这个目录程序会用内置默认值不用手动创建。需要改默认渲染颜色、单位制或者最近打开文件列表时再进去编辑。改之前先备份原文件这是后悔药——配置项写错格式会导致启动时静默退出连报错都没有。4. 避坑与排查装 GerberView 最常见的五个翻车点4.1 启动报 “could not find or load the Qt platform plugin”现象是命令行一闪而过或者弹窗提示找不到平台插件程序根本进不了主界面。原因几乎都是 Qt 绑定混装环境里同时存在 PyQt5 和 PySide2或者系统全局的 Qt 插件目录被优先加载了。解决分两步先pip list | grep -i qt看有没有两个绑定并存有就卸掉一个再确认QT_PLUGIN_PATH环境变量没有指向系统目录临时unset QT_PLUGIN_PATH后重试。我一般会在激活虚拟环境后顺手unset一下这个变量避免继承宿主环境的脏值。4.2 打开 Gerber 文件一片空白但文件本身没问题现象是界面起来了拖进文件后画布全白缩放也没反应。原因通常是图形后端没初始化成功程序降级到了空渲染器却没提示。排查时先看命令行有没有 OpenGL 相关警告再试export LIBGL_ALWAYS_SOFTWARE1强制软件渲染。如果软件渲染能出图说明是显卡驱动或 OpenGL 版本问题去更新驱动或者换一台有独显的机器。这个坑在虚拟机里特别常见因为虚拟显卡的 OpenGL 支持往往不完整。4.3 pip 安装卡在 “Building wheel for xxx” 然后失败现象是某个依赖编译到一半报错退出日志里能看到 gcc 或头文件缺失。原因是这个包没有预编译轮子需要本地编译而系统缺开发工具链。解决是先装build-essentialDebian 系或Development ToolsRHEL 系再补上对应的-dev头文件包。如果还是不行去查这个包有没有更新的版本提供了预编译轮子升级版本往往比死磕编译更快。我遇到 shapely 老版本编译失败时升一个小版本就拿到了现成轮子。4.4 中文路径下程序闪退现象是程序装在带中文的目录或者打开的文件路径含中文启动或加载时直接退出。原因是部分底层库对非 ASCII 路径处理不完善。解决是把虚拟环境和源码都放到纯英文路径下比如~/projects/gerberview。文件本身可以放在中文目录但打开前先复制到临时英文路径再加载用完再挪回去。这个办法笨但有效比去改库源码靠谱。4.5 升级 Python 小版本后依赖全部失效现象是系统自动升级了 Python原来的虚拟环境激活后 pip 报错或者 import 失败。原因是 venv 里记录的是创建时的解释器绝对路径解释器一换环境就废了。解决是删掉.venv重建不要试图修复。重建前把pip freeze requirements.lock存一份当前可用版本清单重建后按 lock 文件装能最大程度还原之前能跑的状态。从那以后我每个项目目录里都留一份 lock 文件换机器直接照着装。5. 装完怎么验证三步确认 GerberView 真的能干活装完不等于能用我习惯用三步验证法确认环境真的跑通而不是“看起来启动了”就完事。第一步是启动自检第二步是加载一个已知正确的测试文件第三步是检查渲染结果和层信息是否对得上。这三步走完才算这套环境可以交付使用。第一步启动后不要急着关看命令行有没有警告输出。干净的启动应该只有版本信息或者空输出出现Warning要逐条看尤其是和 OpenGL、Qt 插件相关的这些警告在简单文件上可能不影响换复杂板子就会暴露。我一般会把启动日志重定向到文件方便对比两次安装的差异。# 启动并把标准输出和错误输出都记录下来 python -m gerberview startup.log 21 # 检查日志里有没有值得关注的警告 grep -iE warn|error|fail startup.log21把错误流合并到标准输出避免漏掉关键信息。grep那行只是快速筛不是所有匹配都是问题比如某些驱动信息里带 “error” 字样但实际无害要结合上下文判断。第二步准备一个最小测试文件。Gerber 是分层给的至少要有顶层铜箔和外形层两个文件才能看出层叠是否正确。加载后检查三件事图形是否完整显示、层列表里层名和文件是否一一对应、单位显示是毫米还是英寸且和文件实际一致。单位这个特别容易错显示对了但比例差 25.4 倍就是单位解析的锅。第三步用工具自带的测量或者坐标显示功能点几个关键位置和已知尺寸对照。比如板子外形是 50mm x 30mm量出来偏差在零点几毫米内算正常差一个数量级就是缩放或单位问题。这一步能抓出“图能显示但尺寸全错”的隐蔽故障这种故障在只看预览时完全发现不了等到拿去对生产文件才翻车。验证项通过标准不通过时先查启动日志无 Qt/OpenGL 相关 error绑定是否混装、插件路径层列表层数与文件数一致文件格式是否被识别图形完整性无缺线、无错位渲染后端、文件编码尺寸测量与已知尺寸偏差小于 1%单位制、缩放参数这套验证流程我现在每次重装都强制走一遍哪怕是在同一台机器上重建虚拟环境。因为依赖版本会漂移上次能跑不代表这次能跑花五分钟验证比事后花半小时排查划算。希望这套流程帮到你少走我当年那些弯路。本文还有配套的精品资源点击获取