绝对导入导致 ModuleNotFoundError

Jon*_*ter 7 python python-3.x

蟒蛇 3.6

我已经编写了一些组件,并且正在尝试将其中一个导入到另一个中。

下面是我的项目结构:

.
??? components
    ??? __init__.py
    ??? extract
    ?   ??? python3
    |       ??? __init__.py
    ?       ??? extract.py
    ??? transform
        ??? python3
            ??? __init__.py
            ??? preprocess.py
Run Code Online (Sandbox Code Playgroud)

提取文件

from components.transform.python3.preprocess import my_function

if __name__ == '__main__':
    my_function()
Run Code Online (Sandbox Code Playgroud)

预处理文件

def my_function():
    print("Found me")
Run Code Online (Sandbox Code Playgroud)

当我跑 python components/extract/python3/extract.py

我看到以下错误:

ModuleNotFoundError: 没有名为“组件”的模块

我在__init__.py包含模块的目录以及顶级包目录中添加了一个空文件。

Ser*_*sta 6

好的,导入需要顶级包在 Python PATH ( sys.path) 中可用。

因此,要使其发挥作用,您应该:

在我的系统上,它成功显示:

export PYTHONPATH='.'
Run Code Online (Sandbox Code Playgroud)