sublime text离线载入第三方库需分两类处理:插件依赖的python模块须解压至packages/根目录(如packages/requests/),含二进制的pyv8等须匹配st版本与系统架构;构建系统调用cli工具则必须用绝对路径配置cmd字段,不可依赖path。

离线环境下,Sublime Text 本身不提供“载入第三方代码库”的运行时能力——它不是 Python 解释器或 Node.js 环境,不能像 IDE 那样直接 import 或 require 外部库。所谓“载入”,实际是指让插件能调用外部 Python 模块(如 requests、PyV8、lxml),或让构建系统/命令能调用本地已安装的 CLI 工具(如 black、eslint)。这两类操作完全不互通,路径、权限、Python 版本都得对得上。
插件依赖的 Python 库必须手动放进 Packages/ 目录
Sublime Text 的插件是用 Python 写的,但它的 Python 运行环境是嵌入式的(ST3 用 Python 3.3,ST4 用 Python 3.8),不走系统 site-packages。插件若 import 失败(控制台报 ImportError: No module named 'xxx'),说明模块没放在 Sublime 能 import 到的地方。
- 必须把第三方库整个文件夹(含
__init__.py)放进Packages/根目录,例如:Packages/PyV8/、Packages/requests/ - 不能放
Installed Packages/,也不能放子目录(如Packages/MyPlugin/requests/)——Sublime 的 import path 只包含Packages/和插件自身目录 - 库名大小写必须和
import语句完全一致;PyV8≠pyv8,否则静默失败 - 纯 Python 库(如
requests)可直接解压进Packages/;含二进制扩展(如PyV8.pyd)的,必须匹配你的系统架构(win64 / macOS arm64 / linux x64)和 Sublime 版本(ST4 不兼容 ST3 的 PyV8)
构建系统调用外部 CLI 工具要配对 PATH 和解释器
如果你在 Tools → Build System → New Build System… 里写了 "cmd": ["black", "$file"] 却报 bin/sh: black: command not found,不是 Sublime 问题,是它根本找不到你本地装的 black。
- 不要依赖系统全局 PATH:Sublime 启动时继承的环境变量可能不包含你 pip 安装 CLI 的路径(比如 macOS 的
/opt/homebrew/bin或 Windows 的%USERPROFILE%AppDataRoamingPythonScripts) - 显式写绝对路径最稳:
"cmd": ["/opt/homebrew/bin/black", "$file"]或"cmd": ["C:\Users\Me\AppData\Roaming\Python\Scripts\eslint.cmd", "$file"] - 确认 CLI 工具本身可执行:终端里能跑通,Sublime 才可能调用成功;Windows 上优先用
.cmd或.bat后缀,别只写eslint - Python 类工具(如
mypy)建议用python -m mypy形式,避免解释器版本错乱
ST4 对 Python 模块加载更严格,旧包大概率失效
ST4 升级了嵌入 Python 到 3.8,并移除了部分旧 API(如 urllib2)。很多老插件(如早年版 Emmet、CSScomb)自带的 PyV8 或内嵌 lxml 在 ST4 下会 import 报错,哪怕文件放对了位置。
- 先在控制台运行
sublime.version(),确认返回值是4xxx;如果不是,别按 ST4 教程操作 - ST4 不兼容 ST3 的
PyV8.sublime-package或PyV8-master/文件夹——必须用专为 ST4 编译的版本(Gitee 镜像常见命名如pyv8-st4-win64.zip) - 某些库(如
html5lib)在 Python 3.8+ 已被弃用,需换用bleach或selectolax替代 - 插件作者未更新时,只能降级到 ST3,或自己 patch 插件源码(改
import urllib.request替代urllib2)
最容易被忽略的是:Sublime 从不提示“模块找不到”,它只是让插件功能缺失或命令面板消失。动手前先开控制台(Ctrl+`),装完立刻看有没有 ImportError;重命名文件夹、移动路径后不重启,等于白干。











