Python从父级子文件夹导入

标签 python import

我有一个问题。我有一个这样的目录设置:

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/

相关文章:

python - 如何修补异步类方法?

python - 如何将 sRGB 转换为线性 sRGB 以计算 opencv 中的色彩校正矩阵? (CCM)

python - 如何导入函数模块并在模块之间传递变量

import - Julia:从同一目录中的包导入内容

haskell - 导入的函数似乎与原始实现的运行方式不同

php - 开发 PHP 数据导入框架的最佳实践是什么?

python - Schonhage-Strassen 乘法实现错误

python - 使用Python将文本文件打印到特定打印机

python - 创建一个新的数据框,将每行的 k 个副本附加到自身

python - 由于导入机制导致 isinstance() 和 type() 等价失败(python/django)