为什么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
您怎么看,为什么会这样?
答案 0 :(得分:0)
这里有两件事在玩:
就像Eskapp在评论中说的那样,PyCharm配置为与您期望的项目根不同的项目根,这可以通过将您的导入标记为未解决的引用来证明。您没有对项目结构提供任何提示,但是可能您的项目根目录设置为Python模块的父目录(甚至更进一步)。 PyCharm正在寻找$ {PROJECTROOT} / oath2_helper,但找不到,因为Project Root的目录错误。
然后,您尝试通过更改为相对导入来解决此问题,这似乎是一个合理的解决方案。看起来您正在直接调用写入这些导入的模块(即python myapp.py
)。当您以这种方式调用模块时,它将丢弃有关程序包结构的信息,并且不再具有有关其他模块相对位置的信息。参见https://stackoverflow.com/a/73149/11034626