为什么从文件夹中导入文件有效,但从导入的文件夹中调用文件却不行?
Why does importing a file from a folder work, but calling a file from an imported folder doesn't?
我目前正在处理一个项目,主文件位于一个目录中,子目录中包含一些附加文件:
project
|- folder
| |- __init__.py
| |- file1.py
| |- file2.py
| |- file3.py
|- main.py
初始化文件为空。
就我而言,我想使用 尽可能少的代码 将所有文件导入我当前的 main.py。重点是:
有效
from folder.file1 import somefunction1
from folder.file2 import somefunction2
somefunction1()
somefunction2()
有效
from folder import file1
from folder import file2
file1.somefunction1()
file2.somefunction2()
不起作用
import folder
folder.file1.somefunction1()
folder.file2.somefunction2()
AttributeError: module 'folder' has no attribute 'file1'
我明白错误消息的意思,但不知道它出现的真正原因。在我的第一个例子中,我可以调用 folder.file 和 folder.file2 作为属性,但在我的最后一个例子中我不能?
不幸的是,我只发现了类似的问题,询问一般情况下如何从文件夹导入文件,但没有关于这个具体问题的信息。
Python 到底在后台做什么,有什么办法可以解决我的问题吗?
您需要添加
from . import file1
在你的 _init_.py
这会将 file1 放入文件夹中,然后您可以从 main.py
访问该文件夹
在您的 init.py 文件中
__all__ = ["file1","file2","file3"]
在main.py
from folder import *
file1.somefunction1()
file2.somefunction2()
我目前正在处理一个项目,主文件位于一个目录中,子目录中包含一些附加文件:
project
|- folder
| |- __init__.py
| |- file1.py
| |- file2.py
| |- file3.py
|- main.py
初始化文件为空。
就我而言,我想使用 尽可能少的代码 将所有文件导入我当前的 main.py。重点是:
有效
from folder.file1 import somefunction1
from folder.file2 import somefunction2
somefunction1()
somefunction2()
有效
from folder import file1
from folder import file2
file1.somefunction1()
file2.somefunction2()
不起作用
import folder
folder.file1.somefunction1()
folder.file2.somefunction2()
AttributeError: module 'folder' has no attribute 'file1'
我明白错误消息的意思,但不知道它出现的真正原因。在我的第一个例子中,我可以调用 folder.file 和 folder.file2 作为属性,但在我的最后一个例子中我不能?
不幸的是,我只发现了类似的问题,询问一般情况下如何从文件夹导入文件,但没有关于这个具体问题的信息。
Python 到底在后台做什么,有什么办法可以解决我的问题吗?
您需要添加
from . import file1
在你的 _init_.py 这会将 file1 放入文件夹中,然后您可以从 main.py
访问该文件夹在您的 init.py 文件中
__all__ = ["file1","file2","file3"]
在main.py
from folder import *
file1.somefunction1()
file2.somefunction2()