首页 > 解决方案 > Python 导入语句不适用于父包

问题描述

我正在使用 Python 3.9.5。

基于这篇文章,我正在尝试重用父目录中的一些功能。这是我的代码层次结构:

github_repository
    src
        base
            string_utilities.py
        validation
            email_validator.py

我也有__init__.py所有文件夹。在他们所有人中。

string_utilities.py内容如下:

def isNullOrEmpty(text: str):
    return text is not None and len(text) > 0

这是email_validator.py内容:

from src.base import string_utilities

def is_email(text: str):
    if string_utilities.isNullOrEmpty(text):
        return False
    # logic to check email
    return True

现在,当我运行时python email_validator.py,我收到此错误:

ModuleNotFoundError:没有名为“src”的模块

我已将令人沮丧的导入语句更改为所有这些不同的形式,但我仍然没有得到任何结果:

from ...src.base import string_utilities

这导致:

ImportError:尝试在没有已知父包的情况下进行相对导入

import src.base.string_utilities

这导致编译器不知道该isNullOrEmpty函数。

import ...src.base.string_utilities

结果是:

相对导入不能与“import .a”形式一起使用;改用“from .import a”

我被困在如何在这个文件中重用该函数的问题上。有人可以帮忙吗?

标签: pythonpython-3.x

解决方案


推荐阅读