PyCharm未解析的导入参考?

时间:2018-11-19 18:01:51

标签: python-3.x pycharm

为什么PyCharm强调了这些进口:

from oauth2_helper import (_url, get_token, get_session)
from config import scope

Unresolved reference,但如果我在前面添加点:

from .oauth2_helper import (_url, get_token, get_session)
from .config import scope

我在PyCharm中没有出现错误下划线,但是从终端运行我的应用程序时,出现了以下错误:

ModuleNotFoundError: No module named '__main__.oauth2_helper'; '__main__' is not a package

您怎么看,为什么会这样?

1 个答案:

答案 0 :(得分:0)

这里有两件事在玩:

就像Eskapp在评论中说的那样,PyCharm配置为与您期望的项目根不同的项目根,这可以通过将您的导入标记为未解决的引用来证明。您没有对项目结构提供任何提示,但是可能您的项目根目录设置为Python模块的父目录(甚至更进一步)。 PyCharm正在寻找$ {PROJECTROOT} / oath2_helper,但找不到,因为Project Root的目录错误。

然后,您尝试通过更改为相对导入来解决此问题,这似乎是一个合理的解决方案。看起来您正在直接调用写入这些导入的模块(即python myapp.py)。当您以这种方式调用模块时,它将丢弃有关程序包结构的信息,并且不再具有有关其他模块相对位置的信息。参见https://stackoverflow.com/a/73149/11034626