从 Python 中的子目录导入模块
Muhammad Waiz Khan
2023年1月30日
2021年2月28日
本教程将讲解 Python 中从子目录导入模块的各种方法。假设我们在项目目录的子目录下有一个文件,我们想导入这个文件并在代码中使用它的方法。
我们可以在 Python 中通过将子目录声明为包来导入文件。这样 Python 就会把它当作一个包,我们就可以导入该目录的文件了。另一种选择可以是将子目录添加到 PYTHONPATH
环境变量中,它是 Python 默认寻找要导入的包的路径。下面给出了这些方法的细节和使用方法。
在 Python 中使用 __init__.py
从子目录中导入一个模块
__init__.py
文件用于将一个目录声明为一个包。__init__.py
文件可以防止 Python 将同名的目录混在一起,所以为了区分一个简单的目录和一个包,使用了 __init__.py
文件。
__init__.py
文件可以是空的,也可以有初始化包所需的代码和包所需导入的模块列表,这个列表由 __all__
变量表示。
一旦 __init__.py
文件被添加到子目录中,我们就可以从子目录中导入该文件,就像下面的示例代码所示。
import subdirectory.myfile
在 Python 中使用 sys.path.insert()
方法从子目录中导入一个模块
从子目录导入文件的另一种方法是将该目录添加到 PYTHONPATH
中。PYTHONPATH
是环境变量,它包含 Python 搜索以导入包的目录的路径。
因此,如果我们使用 sys.path.insert()
方法将子目录添加到 PYTHONPATH
中,Python 将首先查找 PYTHONPATH
中的目录,并从那里导入它。
sys.path.insert()
方法将把子目录插入到 sys.path
或 PYTHONPATH
变量中,该变量包含了 Python 将搜索导入所需模块的目录列表。
下面的示例代码演示了如何使用 sys.path.insert()
方法从子目录中导入一个文件。
import sys
sys.path.insert(0, './subdirectory')
import myfile