终端venv环境下Pylint无法导入项目本地模块如何解决
问题原因
Python运行脚本时会自动将脚本所在目录加入模块搜索路径sys.path,因此代码可以正常执行;但pylint静态检查时默认不会同步该路径规则,无法识别同项目下的包导入,该问题与venv环境、所列依赖版本无直接关系。
终端环境解决方法(无需IDE配置)
以下方案任选其一即可,推荐优先使用方案3,零额外配置:
- 方案1:项目固定配置
进入平时执行python main_prog.py的目录(即main_prog.py所在的some_dir目录),新建.pylintrc配置文件,写入以下内容:
保存后直接在该目录执行[MASTER] python-path=./ init-hook='import sys; sys.path.append("./")'pylint main_prog.py即可正常识别导入。 - 方案2:命令行临时传参
无需新建配置文件,每次执行检查时带上路径初始化参数:# 先cd进入some_dir目录 pylint --init-hook="import sys; sys.path.append('./')" main_prog.py - 方案3:模块方式启动pylint
激活venv虚拟环境后进入some_dir目录,以Python模块方式调用pylint,会自动继承当前Python解释器的路径搜索规则,和Python 3.8.10运行脚本时的模块识别逻辑完全一致:python -m pylint main_prog.py
注意:所有pylint命令的执行工作目录必须和运行
main_prog.py时的工作目录保持一致,否则路径匹配错误仍会触发导入报错。
内容的提问来源于stack exchange,提问作者mark
相关产品推荐
相关产品推荐

