应只打包Packages/目录下含.py文件且结构合规的插件文件夹,排除User、空文件夹、.sublime-package文件及命名含空格或点号的文件夹;需检查ignored_packages配置、依赖模块和大小写敏感问题。

Sublime Text 没有内置“一键打包所有插件”功能,必须手动归档 Packages 目录下的有效插件文件夹,同时排除 User、空文件夹、.sublime-package 文件等干扰项。
哪些文件夹该打包?只留真正插件源码
Sublime 加载插件只认 Packages/ 下的 Python 文件夹(含 .py 文件且结构合规),不是所有子目录都算插件:
-
User文件夹是你的个人配置,不是插件,别打包进去 - 以
.sublime-package为后缀的文件(如Emmet.sublime-package)属于 Package Control 自动管理的压缩包,已解压的同名文件夹才需归档 - 空文件夹、仅含
.git或README.md的文件夹,Sublime 不加载,打包也没用 - 文件夹名含空格或点号(如
BracketHighlighter v2)会导致加载失败,打包前建议重命名为BracketHighlighter
怎么快速筛选出“真插件”?用命令行或文件管理器过滤
直接进 Packages/ 目录看不靠谱——太多杂项。更稳的方式是检查每个文件夹是否含可加载的 Python 模块:
- Windows:在
Packages/目录下运行dir /ad /b ^& for /f "delims=" %i in ('dir /ad /b') do @if exist "%i\*.py" echo %i(或用 PowerShell:Get-ChildItem -Directory | Where-Object { (Get-ChildItem $_.FullName -Filter "*.py" -ErrorAction SilentlyContinue).Count -gt 0 } | ForEach-Object Name) - macOS/Linux:执行
find . -maxdepth 1 -type d -exec sh -c 'ls "{}/"*.py >/dev/null 2>&1 && echo "$(basename {})"' \; - 如果不想敲命令,就逐个打开文件夹,确认里面有
__init__.py或主模块文件(如plugin_name.py),且类继承自sublime_plugin.TextCommand等
打包时容易漏掉的三个关键点
手动打包不是简单 zip 整个 Packages/,否则恢复时大概率失效:
- 忽略
ignored_packages配置:即使插件文件在目录里,若其名出现在Preferences → Settings - User的"ignored_packages"数组中,它就不会被加载——打包前应先检查并临时清空该字段 - 没处理依赖模块:像
PyV8、markupsafe这类非插件但被多个插件共用的模块,如果放在Packages/下,也得一并打包,否则还原后报ImportError - 大小写敏感和路径嵌套:GitHub 下载的
plugin-name-master必须解压后移出那层包装目录,重命名为PluginName并放平级;Windows 和 macOS 对大小写不敏感,但 Linux 会直接跳过brackethighlighter(小写)这种命名
真正可靠的打包动作,是把筛选出的插件文件夹 + 必要依赖 + 用户 keymap/commands 配置(如有)单独拉出来,再压缩。别图省事全盘拷贝——Packages/ 里混着调试残留、临时下载、半途失败的克隆目录,一并打包只会让下次恢复变成排障现场。


















