Python 从同级目录导入函数时出现名称错误
Python Name Error during importing function from sibling directiry
我在 java 中的项目,我正在使用一些 python 脚本来完成其他任务。我的 python 脚本目录结构如下:
Parent Dir
- Scripts (driver.py)
- utils (common.py, helper.py)
我想在 driver.py
classes 中使用 common.py
和 helper.py
中的函数 & classes。我像这样在 driver.py
中导入这些:
sys.path.append("..")
from utils import *
configs = load_config(filepath)
但是当我使用 common.py
中的某些函数时(假设 common.py
从 helper.py
导入 class TestClass
并且还具有函数 load_config(filepath)
) 它抛出错误-
NameError: name 'load_config' is not defined
您不能像那样导入整个目录。您需要单独导入文件。您可以将 __init__.py 文件添加到您的 utils 文件夹中,当您按照您的方式导入目录时,该文件将被执行。然后您可以在 __init__.py
中选择您希望执行的任何行为
例如,您的 __init__.py 可能如下所示:
__all__ = ["common", "helper"]
这意味着当您调用 from utils import * 时,* 将导入 __all__
中列出的模块
请记住,如果您想使用 common 中的函数,您仍然需要调用 common.function_name()。
我在 java 中的项目,我正在使用一些 python 脚本来完成其他任务。我的 python 脚本目录结构如下:
Parent Dir
- Scripts (driver.py)
- utils (common.py, helper.py)
我想在 driver.py
classes 中使用 common.py
和 helper.py
中的函数 & classes。我像这样在 driver.py
中导入这些:
sys.path.append("..")
from utils import *
configs = load_config(filepath)
但是当我使用 common.py
中的某些函数时(假设 common.py
从 helper.py
导入 class TestClass
并且还具有函数 load_config(filepath)
) 它抛出错误-
NameError: name 'load_config' is not defined
您不能像那样导入整个目录。您需要单独导入文件。您可以将 __init__.py 文件添加到您的 utils 文件夹中,当您按照您的方式导入目录时,该文件将被执行。然后您可以在 __init__.py
中选择您希望执行的任何行为例如,您的 __init__.py 可能如下所示:
__all__ = ["common", "helper"]
这意味着当您调用 from utils import * 时,* 将导入 __all__
中列出的模块请记住,如果您想使用 common 中的函数,您仍然需要调用 common.function_name()。