gpt4 book ai didi

python-3.x - 如何从python3中的子文件夹导入模块(带有空的__init__.py)

转载 作者:行者123 更新时间:2023-12-03 13:19:53 24 4
gpt4 key购买 nike

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

我有以下文件结构:

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

调用foo.py:
#import statement wanted

def main():
foo()

if __name__ == "__main__":
main()

子模块.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'我在这里有点困惑,因为它们直接取自 Documentation
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: No module named x据我所知,处理我的错误消息,但不处理子文件夹(它对我来说很好用 submodule.pycallfoo.py 处于同一级别)

有几个处理从子文件夹导入的问题,但我无法让它们为我工作。
我希望提供了一个非常简单的问题表述。

最佳答案

假设我们有这个文件夹/文件架构:

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

1 directory, 3 files

调用foo.py :
from folder.submodule import foo

def main():
foo()

if __name__ == '__main__':
main()

子模块.py :
def foo():
print('foo in submodule')

现在把你自己放在 callfoo.py的同级文件夹中并运行:
$ python3 callfoo.py

输出:
> foo in submodule

关于python-3.x - 如何从python3中的子文件夹导入模块(带有空的__init__.py),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48129733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com