pycharm 导入模块时 误报错误

这篇文章不是写找不到模块报错的,而是写我可以正常跑程序,但是pycharm有红色的错误提示(后文简称pycharm报错),也就是说,我代码写的没问题,但是pycharm没有正确理解我的项目结构。

我先是这么组织了一下项目目录,src是存放所有代码的目录,src/main.py是程序的入口

myproject
├── Dockerfile
├── README.MD
├── data
├── output
├── src
│   ├── action
│   ├── common
│   ├── data
│   ├── main.py
│   └── model
└── test
    ├── test.py
    └── test_main.py

然后,当我想在/src/data/a.py中导入/src/common/b.py时出现了问题:

  1. 如果我用相对导入的方法from ..common import b导入,pycharm不报错,运行时会报错ImportError: attempted relative import beyond top-level package,原因看第一篇引用吧,这里不赘述了
  2. 使用绝对导入的方法
    1. 使用from src.common import b, pycharm不报错,运行时报错ModuleNotFoundError: No module named 'src'
    2. 使用from common import b,运行不报错,pycharm报错(No module named 'common')。

首先要理解,2.1是运行时报错是因为main.py的父级目录src对python来说压根就不是,也就无从导入,正确的导入方法只能是2.2,那么pycharm报错就一定是误报了。怎么不让它误报呢?打开settings...|Project:xxx|Project Structure,在这里你会发现,pychrm只知道你的content root,其它的都不知道,你要做的就是像图中黄色框中所示,给它解释清楚就好了。

目录结构设置

引用

  1. https://zhuanlan.zhihu.com/p/416867942

你可能感兴趣的:(pycharm 导入模块时 误报错误)