Pycharm项目导入模块不正确

时间:2015-01-29 19:29:53

标签: python flask pycharm

我有一个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的课程。我在导入模块之前尝试编写blah = Blah()。当我点击选项+返回时,我想让pycharm导入它。当我尝试通过pycharm导入时,它会像这样导入它:

from webapp.py.src.blah import Blah

由于webapp不是python包,因此无法正常工作。当我将其更改为

from py.src.blah import Blah

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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