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.pyhelper.py 中的函数 & classes。我像这样在 driver.py 中导入这些:

sys.path.append("..")
from utils import *

configs = load_config(filepath)

但是当我使用 common.py 中的某些函数时(假设 common.pyhelper.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()。