如何从python3的子文件夹中导入模块(空__init__.py)

同伴

我想从子文件夹中的文件调用函数。我宁愿静态地做。我使用空__init__.py文件,因为我读过它们在简单的情况下可以是空的(我的情况再简单不过了),或者从3.5开始我根本不需要它们。但我愿意填补他们。

我具有以下文件结构:

test
├── callfoo.py   (main)
├── __init__.py  (empty)
└── folder
    ├── submodule.py
    └── __init__.py (empty)

callfoo.py:

#import statement wanted

def main():
    foo()

if __name__ == "__main__":
        main()

submodule.py

def foo():
    print('foo')

对于导入语句,我尝试过:

import test.folder.submodule
from test.folder import submodule
from test.folder.submodule import foo

每个导致ModuleNotFoundError: No module named 'test.folder'我在这里有点困惑,因为它们直接来自文档

import .folder.submodule-> invalid syntax importlib.import_module('test.folder.submodule')ModuleNotFoundError:没有名为“ test.folder”的模块

这有效:

import importlib.util
spec = importlib.util.spec_from_file_location("submodule", "/home/.../test/folder/submodule.py")
foo = importlib.util.module_from_spec(spec)
spec.loader.exec_module(foo)

但是我真的不想动态地做到这一点,尤其是对于多个文件。

ModuleNotFoundError:就所知,没有名为x的模块处理我的错误消息,但不处理子文件夹(submodule.py在与相同的级别上,它对我来说很好用callfoo.py

有几个问题涉及子文件夹的导入,但是我无法让它们为我工作。我希望提供一个简单的问题提法。

Chiheb Nexus

假设我们具有以下文件夹/文件架构:

test
├── callfoo.py
└── folder
    ├── __init__.py
    └── submodule.py

1 directory, 3 files

callfoo.py

from folder.submodule import foo

def main():
    foo()

if __name__ == '__main__':
    main()

submodule.py

def foo():
    print('foo in submodule')

现在将您自己放置在同一级别的文件夹中callfoo.py并运行:

$ python3 callfoo.py

输出:

> foo in submodule

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在__init__.py中导入所有内容时不包括模块

Python 3-在同一目录中导入.py文件-ModuleNotFoundError:没有名为“ __main __。char”的模块;'__main__'不是一个包

模块导入和__init__.py在Python中

pyspark导入用户定义的模块或.py文件

在Google Colab中导入.py文件

使用Python 2.7调用包含.py的文件夹的子文件夹中的应用程序

Python3错误“ ImportError:未命名模块”具有__init__.py

如何从python3的子文件夹中导入模块(空__init__.py)

Pytest:如何解决tests文件夹中缺少__init__.py的问题?

如何在Django Settings.py中导入另一个Python 3文件?

包__init__.py中导入的模块不可通过点访问

在python中导入files.py的问题

__init__.py中断pyinstaller时如何正确导入文件

将整个.py文件文件夹导入google colab

通过在__init__.py中导入子包来跳过导入路径中的目录名称

为什么__init__.py将文件夹中的所有文件作为模块导入?

如何使用Sphinx apidoc仅记录__init__.py中导入的Python类?

从其他文件夹导入python,而不使用.py扩展名

在python中导入子包时出现问题:如何编写__init__.py文件

在子文件夹中导入Python

如何在Jupyter Notebook中导入python .py文件

如何删除py_library导入中的文件夹名称?

是否可以将Python模块(.py文件)导入dict?

使用__init__.py导入Python子模块

Python单元测试模拟,无法修补在__init__.py中导入的time模块

导入.py文件错误

如果您在子文件夹 python3 中工作,如何从主文件夹导入 file.py

python:从父__init__.py文件导入?

setup.py - 如何将子文件夹设置为主包目录?

TOP 榜单

热门标签

归档