pee*_*eer 8 python-import python-3.x
我想从子文件夹中的文件调用函数.我宁愿做静态的.我使用空__init__.py文件,因为我已经读过,在简单的情况下,它们可能是空的(我的可能不是更简单),或者从3.5开始,我根本不需要它们.但我愿意填补它们.
我有以下文件结构:
test
??? callfoo.py (main)
??? __init__.py (empty)
??? folder
??? submodule.py
??? __init__.py (empty)
Run Code Online (Sandbox Code Playgroud)
callfoo.py:
#import statement wanted
def main():
foo()
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
submodule.py
def foo():
print('foo')
Run Code Online (Sandbox Code Playgroud)
对于我尝试过的import语句:
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)
Run Code Online (Sandbox Code Playgroud)
但我真的不想动态地这样做,特别是对于几个文件.
这个ModuleNotFoundError:没有名为x的模块处理我的错误消息,但是根据我的判断,它没有处理子文件夹(对于我来说,submodule.py它在同一级别上工作正常callfoo.py)
有几个问题涉及从子文件夹导入,但我无法使它们为我工作.我希望提供一个简单的问题公式.
假设我们有这个文件夹/文件架构:
test
??? callfoo.py
??? folder
??? __init__.py
??? submodule.py
1 directory, 3 files
Run Code Online (Sandbox Code Playgroud)
callfoo.py:
from folder.submodule import foo
def main():
foo()
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
submodule.py:
def foo():
print('foo in submodule')
Run Code Online (Sandbox Code Playgroud)
现在把你的自己放在同一级别的文件夹中callfoo.py并运行:
$ python3 callfoo.py
Run Code Online (Sandbox Code Playgroud)
输出:
> foo in submodule
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7232 次 |
| 最近记录: |