Django运行pylint报No module named myapp配置冲突问题求解
问题根源
这是Python模块搜索路径不一致导致的问题:
- 执行
manage.py runserver时,manage.py所在的外层myproj目录会被自动加入Python的模块搜索路径sys.path,因此INSTALLED_APPS里写'myapp'可以正常被识别。 - 在存放
.pylintrc的根目录(外层myproj的上级目录)运行pylint时,默认只有当前根目录被加入sys.path,pylint无法直接定位到myapp模块,因此抛出找不到模块的错误。
解决方案
任选一种即可,无需修改INSTALLED_APPS配置,可同时兼容pylint检查和项目正常启动:
- 运行pylint时临时指定模块搜索路径
执行命令时添加PYTHONPATH环境变量,将外层myproj目录加入搜索路径:
PYTHONPATH=./myproj DJANGO_SETTINGS_MODULE=myproj.myproj.settings pylint myproj --load-plugins pylint_django
- 修改pylint配置永久生效
打开你的.pylintrc文件,在[MASTER]配置段添加如下配置,每次运行pylint自动把myproj目录加入搜索路径:
[MASTER] init-hook='import sys; sys.path.append("./myproj")'
配置完成后直接运行你原本的pylint命令即可正常执行检查。
- 调整pylint执行目录
进入外层myproj目录下执行pylint,注意如果.pylintrc在上一级根目录,需要手动指定配置文件路径:
cd myproj DJANGO_SETTINGS_MODULE=myproj.settings pylint . --load-plugins pylint_django --rcfile=../.pylintrc
内容的提问来源于stack exchange,提问作者Simen Russnes
相关产品推荐
相关产品推荐

