为什么 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
你怎么看,为什么会这样?
最佳答案
这里有两件事在起作用:
就像 Eskapp 在评论中所说的那样,PyCharm 被配置为与您预期不同的项目根目录,正如它将您的导入标记为未解析的引用所证明的那样。您没有为您的项目结构提供任何提示,但您的 Project Root 很可能设置为 Python 模块的父目录(甚至更进一步的层次结构)。 PyCharm 正在寻找 ${PROJECTROOT}/oath2_helper 并没有找到它,因为 Project Root 设置为错误的目录。
然后,您尝试通过更改为相对导入来解决此问题,这似乎是一个合乎逻辑的解决方案。看起来您正在直接调用写入这些导入的模块(即 python myapp.py
)。当你这样调用一个模块时,它会丢弃关于包结构的信息,不再有任何关于其他模块相对位置的信息。见 https://stackoverflow.com/a/73149/11034626
关于python-3.x - PyCharm Unresolved 导入引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53380281/