Pycharm 项目导入模块不正确

Pycharm project imports modules incorrectly

我有一个带有 Flask webapp 和一个单独的 python 目录的 repo,我正在使用 PyCharm。

我的项目目录是:

/backup/
    __init__.py
    python modules etc
/webapp
    /py
        __init__.py
        /lib
            __init__.py
            python code
        /src
            __init__.py
            python code
    /static
        js, css, fonts etc
    /templates
        html
    webapp.py

我正在尝试将模块导入 webapp.py。此模块存在于 webapp/py/src/blah.py 中。 blah.py 有个叫 Blah 的 class。我试图在导入模块之前写 blah = Blah() 。我希望 pycharm 在我点击选项 + return 时导入它。当我尝试通过 pycharm 导入时,它会像这样导入:

from webapp.py.src.blah import Blah

这不起作用,因为 webapp 不是 python 包。当我把它改成

from py.src.blah import Blah

有效。有什么办法可以让它正确导入吗?我 相信 我以前用过它。然后一个小组成员决定几乎每个目录都需要一个 __init__.py,我认为这可能搞砸了 pycharm。我尝试刷新缓存,但它不起作用。有什么解决办法吗?

如图所示,webapp 目录不是 Python 包。它不包含 __init__.py 文件,因此不能包含在导入路径中。您似乎已经设置了 Python 路径,以便 webapp 目录位于路径上,这就是为什么它下面的包是可导入的(py 目录)。

所以这是您构建项目的方式的问题,而不是 PyCharm。有关构建 Flask 应用程序和相关数据的 "right" 方法的示例,请参阅 Python 聊天室网站的源代码:https://github.com/sopython/sopython-site.

基本上,您需要 运行 从应该位于您的路径上的目录,每个包都应该在这个目录中(并且应该是带有 __init__.py 的包)。 myapp 或 backup 都不应该在 Python 路径上,只有项目。

/project
    /run.py
    /myappp
        __init__.py
    /backup
        __init__.py