Python 3.x 导入时是否有未解析的引用?

Python 3.x 导入时是否有未解析的引用?,python-3.x,pycharm,Python 3.x,Pycharm,为何PyCharm强调这些进口: from oauth2_helper import (_url, get_token, get_session) from config import scope 作为未解析引用,但如果我在前面添加点: from .oauth2_helper import (_url, get_token, get_session) from .config import scope 我没有在PyCharm中得到错误下划线,但当从终端运行我的应用程序时,我得到以下错误: M

为何PyCharm强调这些进口:

from oauth2_helper import (_url, get_token, get_session)
from config import scope
作为
未解析引用
,但如果我在前面添加点:

from .oauth2_helper import (_url, get_token, get_session)
from .config import scope
我没有在PyCharm中得到错误下划线,但当从终端运行我的应用程序时,我得到以下错误:

ModuleNotFoundError:没有名为“\uuuu main\uuuuu.oauth2\u helper”的模块__main__u;不是一个包


你怎么想,为什么会发生这种情况?

这里有两件事在起作用:

正如Eskapp在评论中所说,PyCharm被配置为一个不同于您预期的项目根,它将您的导入标记为未解析的引用就证明了这一点。您没有向项目结构提供任何提示,但您的项目根目录很可能设置为Python模块的父目录(甚至更高层次结构)。PyCharm正在查找${PROJECTROOT}/oath2\u帮助程序,但找不到它,因为项目根目录设置错误


然后尝试通过更改为相对导入来解决此问题,这似乎是一个合乎逻辑的解决方案。看起来您正在直接调用写入这些导入的模块(即
python myapp.py
)。当您以这种方式调用一个模块时,它会删除关于包结构的信息,而不再有关于其他模块相对位置的任何信息。请参见

您是否选择从终端运行应用程序的目录作为
源根目录
?(右键单击要成为根目录的文件夹,然后单击
将目录标记为->源目录
)根文件夹应该有一个蓝色图标。然后PyCharm将自动检查从该定义根目录导入的内容。将其作为答案发布,这是问题的解决方案。