首页  >  文章  >  后端开发  >  如何在 Python 中从子目录导入文件:为什么需要 `__init__.py`?

如何在 Python 中从子目录导入文件:为什么需要 `__init__.py`?

Susan Sarandon
Susan Sarandon原创
2024-11-19 18:37:03821浏览

How to Import Files from Subdirectories in Python: Why Do I Need `__init__.py`?

从子目录导入文件

在 Python 编程领域,有效组织代码至关重要。子目录是维护模块化的一种巧妙方法,但是当从这些子目录导入文件时,您可能会遇到不可预见的障碍。

考虑以下场景:您有一个名为 tester.py 的文件位于 /项目目录。 /project 目录中有一个名为 lib 的子目录,其中包含另一个名为 BoxTime.py 的文件。您的目标是将 BoxTime 导入 tester.py 脚本。

遇到导入错误

您的第一种方法是使用以下命令导入 BoxTime:

import lib.BoxTime

但是,此尝试遇到了错误消息:

Traceback (most recent call last):
  File "./tester.py", line 3, in <module>
    import lib.BoxTime
ImportError: No module named lib.BoxTime

不过,您正在寻找一种解决方案来桥接主脚本和子目录中的文件之间的间隙。

揭开谜团

解决方案位于软件包文档(第 6.4 节)中。根据文档,Python 要求子目录中存在一个名为 __init__.py 的空白文件。

在我们的示例中,您需要在 lib 目录中创建一个空的 __init__.py 文件。这种微妙的调整可以让 Python 将子目录识别为包,并让您能够无缝导入文件。

所以,不要忽视 __init__.py 文件的重要性。它充当看门人,促进从子目录导入文件。

其他注意事项

虽然创建空的 __init__.py 文件解决了最初的问题,但从以下位置导入文件时还需要考虑另一个方面子目录。 Python 要求您在模块名称前加上目录路径,例如 lib.BoxTime。

或者,您可以使用以下语法为模块分配别名:

import lib.BoxTime as BT

这允许您使用 BT 别名方便地调用模块,如 BT.bt_function()。

遵循这些准则,您将解决您的导入问题,确保将子目录中的文件无缝集成到您的 Python 项目中。

以上是如何在 Python 中从子目录导入文件:为什么需要 `__init__.py`?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn