我有一个问题。我有一个这样的目录设置:
folder/
main.py
/stuff/
__init__.py
function.py
/items/
__init__.py
class.py
我的问题是如何将 class.py 导入到 function.py 中?此设置非常具体且无法更改。我需要做什么才能使其发挥作用?
最佳答案
只要应用程序是通过 main.py
启动的,您当前的目录结构似乎很理想。
Python 将始终自动将主脚本的父目录添加到 sys.path
的开头(即示例中的 folder
)。这意味着导入机制在搜索不属于标准库的模块和包时将优先考虑该目录。
鉴于此,您可以将 classes.py
模块导入 function.py
,如下所示:
from items import classes
(请注意,我已重命名该模块,因为 class
是 python 关键字)。
如果您后来向 stuff
添加了另一个模块,并希望将其导入到 functions.py
中,您可以这样做:
from stuff import another
如果一个子包被添加到 items
中,并且您想从中导入一个模块,您可以这样做:
from items.subpackage import module
以这种自上而下的方式指定的导入可以从应用程序内的任何模块使用,因为它们始终相对于主脚本的父目录,而主脚本具有优先级。
关于Python从父级子文件夹导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27344641/