ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

dupeGuru 源码构建指南:从零编译跨平台重复文件查找工具

dupeGuru 源码构建指南:从零编译跨平台重复文件查找工具 桌面应用【免费下载链接】dupeguruFind duplicate files项目地址https://gitcode.com/gh_mirrors/du/dupeguru点击查看免费下载dupeGuru 是一款跨平台Linux、macOS、Windows的重复文件查找 GUI 工具核心使用 Python 3 编写界面基于 Qt 框架。本指南围绕仓库根目录的 README.md 展开完整讲解其源码目录结构、构建环境准备、Make 与非 Make 两种编译流程、Debian/Ubuntu 打包以及自动化测试方案让读者不仅能运行 dupeGuru还能理解其模块划分与底层构建机制。项目概览一个引擎、三种模式、多端 UIdupeGuru 的设计采用核心逻辑与界面分离的架构所有重复扫描、匹配、删除决策等业务逻辑位于core包中与具体图形工具包无关UI 层则针对 Qt 工具包单独实现于qt包。从 help/en/index.rst 可以看到dupeGuru 提供三种运行模式Standard标准模式通用文件去重对应 core/se 目录se 即 Standard EngineMusic音乐模式针对音频文件的指纹匹配对应 core/me 目录me 即 Music Engine借助 mutagen 解析音频标签、使用 xxhash 生成内容哈希Picture图片模式针对图片的内容比对对应 core/pe 目录pe 即 Picture Engine通过 C 扩展模块block、cache实现高效的块级图像指纹计算。每种模式都拥有独立的扫描类型与特性同时共享位于 hscommon 中的通用辅助代码路径抽象、冲突处理、通知机制、表格/树形 UI 基类等。源码目录结构解析README 明确给出了本仓库的组织方式各目录职责如下目录内容说明coredupeGuru 的核心逻辑代码纯 Python 实现不含任何 UI 依赖qtQt 工具包对应的界面代码使用 Python PyQt5 编写images各 UI 版本使用的图标与图片资源pkg打包所需的各种骨架文件如 pkg/debian 下的打包脚本、pkg/dupeguru.desktop 桌面入口helpSphinx 格式的帮助文档源码构建后即为软件内置的用户文档locale各语言的 .po 本地化文件构建时通过 msgfmt 编译为 .mohscommonHS 系列应用共享的辅助函数库值得留意的是core包内部还按三种模式细分出se、me、pe三个子包以及app.py、directories.py、engine.py、results.py、prioritize.py等公共核心模块。图片模式还包含 C 语言实现的性能关键模块见 core/pe/modules 下的block.c、cache.c、common.c、common.h这解释了为什么构建时需要 C 编译器。构建前的环境准备版本与依赖前提根据 requirements.txt 与 README构建需要Python 3.7PyQt5requirements.txt中声明为PyQt5 5.15.0,6.0非 Linux 平台由 pip 安装编译 C 扩展需要build-essential与python3-dev。其余运行期依赖也集中在 requirements 中distro系统发行版识别、mutagen音乐标签解析、polibpo 文件处理、xxhash快速哈希、Send2Trash删除到回收站、sphinx帮助文档构建、semantic-version等。Linux 系统包安装在 Linux 环境下README 建议安装以下系统包或等价物python3-pyqt5 pyqt5-dev-tools # 部分系统需要见下文说明 python3-venv # 仅在使用虚拟环境时需要 python3-dev build-essential其中有一个易踩的坑部分 Linux 发行版安装python3-pyqt5后不会把pyrcc5Qt 资源编译器加入 PATH导致 Qt 资源文件.qrc内含图标无法生成对应的qt/dg_rc.py。Debian 系系统必须额外安装pyqt5-dev-tools而 Arch 系不需要。可用which pyrcc5验证其是否可用。若还要生成安装包则需追加python3-setuptools debhelper方式一使用 Makefile 构建并运行dupeGuru 自带的 Makefile 封装了从环境创建到编译运行的完整流程。最简单的方式是直接执行make make run这条命令背后发生的事可以拆解为 Makefile 中的几个核心目标reqs校验 Python 次版本号不低于 7即 3.7检测 PyQt5 是否已安装并确认python3 -m venv可用env创建虚拟环境env随后pip install -r requirements.txt。这里有一个细节首次创建 venv 时不带--system-site-packages再通过python3 -m venv --upgrade --system-site-packages env升级以规避某些发行版如 Gentoo系统 pip 干扰虚拟环境 pip 的问题modules调用python build.py --modules编译 C 扩展模块i18n对 locale 下所有.po文件执行msgfmt生成.moqt/dg_rc.py执行pyrcc5 qt/dg.qrc qt/dg_rc.py生成 Qt 资源模块all按顺序完成env、i18n、modules、qt/dg_rc.py全部目标。Makefile 同时考虑了Windows/Msys2 兼容在 Windows 下 venv 目录名为Scripts、编译产物为*.pyd且创建 venv 时不使用--system-site-packages。若系统依赖已全部满足可以设置NO_VENV1跳过 venv 创建与 pip 安装流程安装前缀默认/usr/local可用PREFIX覆盖非最终安装路径如沙箱可用DESTDIR指定。安装到系统目录则使用make install会把run.py安装为/usr/local/bin/dupeguru软链接并附带桌面文件与图标。方式二不使用 Make 的手动构建如果不依赖 MakefileREADME 提供了完全手动的构建流程cd dupeGuru 目录 python3 -m venv --system-site-packages ./env source ./env/bin/activate pip install -r requirements.txt python build.py python run.py注意此处的 venv 创建直接使用了--system-site-packages以便复用系统已装的 PyQt5。build.py完成 C 扩展编译与资源生成run.py 则是真正的应用入口它创建QApplication设置组织/应用名与版本安装 Qt 下的 gettext 翻译注册 SIGINT/SIGTERM/SIGQUIT 信号处理器并通过一个 500ms 的QTimer让 Python 在 Qt 事件循环运行期间仍能处理信号最后加载qt.app.DupeGuru主窗口并进入事件循环。生成 Debian/Ubuntu 安装包要产出可安装的 Debian/Ubuntu 包需要额外安装 requirements-extra.txt 中的依赖pytest、flake8、black等其中pyinstaller仅限非 Linux 平台。步骤为cd dupeGuru 目录 python3 -m venv --system-site-packages ./env source ./env/bin/activate pip install -r requirements.txt -r requirements-extra.txt python build.py --clean python package.pyREADME 还贴心地给出了一行式写法进入目录后执行bash -c python3 -m venv --system-site-packages env source env/bin/activate pip install -r requirements.txt -r requirements-extra.txt python build.py --clean python package.py打包所需的骨架文件debian 打包规则、desktop 文件等位于 pkg 目录例如 pkg/debian/rules 与 pkg/dupeguru.desktop。运行测试套件项目使用 tox.ini 定义测试矩阵覆盖 Python 3.7 至 3.11py37,py38,py39,py310,py311缺失的解释器会被跳过。若系统已安装 Tox 1.7无需额外配置虚拟环境cd dupeGuru 根目录 toxtox.ini的[testenv]中定义的完整测试流程为先python build.py --modules编译模块再执行flake8静态检查、black --check .格式检查最后以py.test core hscommon运行核心与公共库的测试。若没有系统级 Tox则先在 venv 中pip install tox再运行。也可以不经过 Tox 直接运行测试在 venv 内pip install -r requirements-extra.txt后执行py.test core hscommon测试用例位于 core/tests 与 hscommon/tests覆盖引擎、扫描器、结果表、目录管理、去重/忽略列表、文件系统抽象等核心功能。此外tox.ini还给出了代码规范约束行宽 120、flake8选择C,E,F,W,B,B950检查项并忽略E203,W503pyproject.toml中black的 line-length 同样设为 120。平台专属构建说明README 将 Windows 与 macOS 的额外步骤单独成文Windows参见 Windows.md其中包含 Msys2 环境、PyInstaller 打包、NSIS 安装器setup.nsi等细节requirements.txt中的pywin32与pyinstaller均带sys_platform win32条件正是为此准备的macOS参见 macos.md面向 Qt 版本给出了 macOS 下的编译与打包指引。底层实现速览C 扩展与哈希依赖如果对图片模式的高效匹配机制感兴趣可以从 setup.py 看到三个 C 扩展的编译单元core.pe._block与core.pe._cache分别编译block.c、cache.c加上共享的common.c以及qt.pe._block_qt编译 qt/pe/modules/block.c用于 Qt 界面下的图片指纹预览。core/pe/modules/common.h作为共享头文件被一并声明。而音频与内容哈希则依赖纯 Python 的mutagen与xxhash库这也是requirements.txt将它们固定版本范围的原因。结语从环境准备、两种构建路径、Debian 打包到 tox 测试矩阵dupeGuru 的构建体系完整且对跨平台细节Msys2、pyrcc5 路径、C 扩展编译做了周到处理。拿到本仓库后make make run即可快速跑起需要产出安装包或贡献代码时再按上述打包与测试流程操作即可。后续如需深入使用层面可继续阅读 help/en 下的用户手册快速开始、文件夹管理、偏好设置、扫描与结果分析等章节。赞分享桌面应用【免费下载链接】dupeguruFind duplicate files项目地址https://gitcode.com/gh_mirrors/du/dupeguru点击查看免费下载相关推荐nvidia-update深度解析为什么它是Mac最佳Nvidia驱动安装工具nvidia update深度解析为什么它是Mac最佳Nvidia驱动安装工具 nvidia update是一款专为macOS用户设计的Nvidia驱动安装CLI如何快速清理磁盘空间dupeGuru终极重复文件查找工具全攻略如何快速清理磁盘空间dupeGuru终极重复文件查找工具全攻略 dupeGuru是一款跨平台的重复文件查找工具能够帮助用户快速扫描并清理计算机中的重复文件桌面应用dupeGuru跨平台重复文件查找工具dupeGuru 是一款功能强大的跨平台图形界面工具专为帮助用户查找和管理系统中的重复文件而设计。该项目采用 Python 3 编写使用 Qt 库构建用户界桌面应用上一篇No-Consolation 项目使用教程下一篇零网传输革命send-my开源项目全攻略——用Apple Find My网络实现设备离线通信创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表