这是我的文件夹结构-
从 api.py 导入IncidentHandler,如下所示-
import data.IncidentHandler
data.IncidentHandler 可以正常工作-在IncidentHandler.py内部,我有以下显示:
import BrowserHandler
当我从 api.py 运行代码时,出现此错误-
Traceback (most recent call last):
File "api.py", line 9, in <module>
import data.IncidentHandler
File "/User/**mask**/**mask**/**mask**/**mask**/tpptickethandler/src/data/IncidentHandler.py", line 1, in <module>
import BrowserHandler
ModuleNotFoundError: No module named 'BrowserHandler'
当我直接从 IncidentHandler.py 运行代码时,它按预期运行。
我意识到解决方案是模块化名称,所以我做了如下更改-
import BrowserHandler
至
import data.BrowserHandler
这现在可以从 api.py 使用,但是不能从 IncidentHandler.py
使用IncidentHandler.py中的新错误
Traceback (most recent call last):
File "IncidentHandler.py", line 1, in <module>
import data.BrowserHandler
ModuleNotFoundError: No module named 'data'
我可以看到我可能正在遵循典型的Python原则,但是面对这个问题是一个非常独特的挑战,到目前为止,我在互联网上还没有找到任何东西。有人可以协助我提供解决方案和/或下次如何更好地解决这个问题。
答案 0 :(得分:0)
您正在尝试将模块组织在不同的文件夹下,这些文件夹是软件包。为了让python将文件夹识别为包,您需要在其下有一个 __ init __。py 文件,该文件是否为空都无关紧要,这将使python正确识别该文件夹作为包装
https://docs.python.org/3/tutorial/modules.html#packages
来自官方网站的示例
sound/ Top-level package
__init__.py Initialize the sound package
formats/ Subpackage for file format conversions
__init__.py
wavread.py
wavwrite.py
aiffread.py
aiffwrite.py
auread.py
auwrite.py
...
effects/ Subpackage for sound effects
__init__.py
echo.py
surround.py
reverse.py
...
filters/ Subpackage for filters
__init__.py
equalizer.py
vocoder.py
karaoke.py
...