核心原因是script插件默认调用系统Python而非项目虚拟环境,需在插件设置中显式指定虚拟环境内Python完整路径(如"C:/project/venv/Scripts/python.exe"),并配置命令为python -m unittest discover -s tests -p "test_*.py"。

script插件运行test文件时找不到unittest模块
这不是你漏装包,而是script插件默认调用系统python命令,不继承虚拟环境——哪怕你在终端里已source venv/bin/activate,Atom 也完全不知道。结果就是ModuleNotFoundError: No module named 'pytest'或ImportError: No module named unittest。
- 必须在
script插件设置页的Command字段填虚拟环境里真实的 Python 路径:/path/to/venv/bin/python(Linux/macOS)或"C:/project/venv/Scripts/python.exe"(Windows,含空格必须加英文双引号) - 别写
python -m unittest这种形式——script会把它当一个命令名去 PATH 里找,而不是交给 Python 解释器执行 - 想直接跑测试,推荐把命令设为:
/path/to/venv/bin/python -m unittest discover -s tests -p "test_*.py"(路径和模式按你项目实际调整)
autocomplete-python无法补全unittest.TestCase方法
这个插件底层靠 Jedi 分析代码,但 Jedi 0.17.x(autocomplete-python锁定的版本)压根不扫描标准库路径,只认你手动喂的Extra Paths。它不会自动加载unittest、pytest这些内置/第三方测试模块的定义。
- 先在虚拟环境中运行:
python -c "import unittest; print(unittest.__file__)",拿到类似/usr/lib/python3.11/unittest/__init__.py的路径 - 把这个路径的**父目录**(即
/usr/lib/python3.11)粘贴进autocomplete-python设置里的Extra Paths(多个路径换行分隔) - Windows 用户注意:用正斜杠写法,例如
C:/Python311/Lib,避免反斜杠被误解析 - 改完必须重启 Atom,否则补全不生效
linter-flake8报错但测试本身能跑通
这是路径错位的典型症状:插件用系统 Python 找到flake8可执行文件,但检查时却用项目虚拟环境的sys.path去 import 模块,导致import unittest失败——而你的测试脚本是直接由python -m unittest启动的,走的是另一套导入逻辑。
- 不要全局
pip install flake8;必须在激活虚拟环境后运行:pip install flake8 pytest - 在
linter-flake8插件设置中,把Executable Path明确指向虚拟环境里的flake8:Linux/macOS 填.venv/bin/flake8,Windows 填.venv\Scripts\flake8.exe - 如果用
pytest,同理配置linter-pylint或linter-pyflakes时也要对齐解释器路径
platformio-ide-terminal里运行pytest命令失败
图形界面启动的 Atom 不加载 shell 配置文件(如~/.zshrc),所以终端插件启动时PYTHONPATH、PATH都是最小集,pytest命令根本不在 PATH 里,更别说识别当前项目虚拟环境了。
- 临时方案:从终端启动 Atom,先
source ~/.zshrc && atom .,这样终端插件能继承完整环境 - 长期方案:别依赖命令行输入
pytest;直接在script插件里配好带路径的完整命令,比如/path/to/venv/bin/python -m pytest tests/ -v - 别信“自动检测工作区虚拟环境”——
platformio-ide-terminal没这功能,它只是个哑终端
复杂点在于 Atom 不暴露它到底用了哪个 Python 解释器、加载了哪些sys.path。调试时得打开开发者工具(Window → Toggle Dev Tools),切到 Console 标签页,看插件日志里打印的实际路径,而不是凭感觉改配置项。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











