我的文件夹结构如下(附图)
在 Main.py 中,我导入了所有文件夹。现在 Main.py 调用位于项目 1 中的 subMain.py。 subMain.py 导入 spark、common 等。现在 utils.py 有 helper.py 中的函数,因此需要导入 helper.py
这会引发模块导入错误,即“No module named Common”
我尝试将 init.py 放在所有文件夹中,但是没有运气。有人可以帮忙吗?提前致谢。
答案 0 :(得分:0)
看起来您想要做的是从 helper.py
相对导入 utils.py
具有以下目录结构
.
├── main.py
└── project
├── __init__.py
├── common
│ ├── __init__.py
│ ├── helper.py
│ └── queries.py
├── spark
│ ├── __init__.py
│ └── utils.py
└── submain.py
在您的 utils.py
中,您应该能够使用
from ..common import helper
答案 1 :(得分:0)
我猜多个子文件夹是指嵌套的子文件夹。
有多种方法,具体取决于您是要创建 pip 可安装库(不一定通过 pypi 可用),还是要将一堆文件捆绑在一起。
请查看github上现有python项目的结构,并尝试重现它。注意添加 __init__.py
文件的位置,并查看 setup.py
下是否有。
如果您不想创建 pip 可安装库(不存在 setup.py
文件),则此存储库 https://github.com/beurtschipper/Depix 可以作为示例。
否则,如果您想创建一个库(存在 setup.py
文件),这个 https://github.com/nipy/nilabels 会有所帮助。
如果没有 __init__.py
并且从 python 版本 > 3,您可以通过相对导入访问 python 文件,但不鼓励使用此解决方案,因为用户可能会开始从不同的文件夹(不一定是您所在的文件夹)运行代码有 main.py
,打破相对路径)。
另一种方法是使用 pythonpath(但这不是我推荐的解决方案。如果您有多个项目,它会变得非常繁忙,或者您可能需要在模块级别进行 hack 以编程方式将相对路径添加到 python 路径)
https://docs.python.org/3/using/cmdline.html#environment-variables