我有一个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。我试过刷新缓存,但它不起作用。任何解决方案?
答案 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