绝对导入结果在ModuleNotFoundError中

时间:2019-01-08 21:49:43

标签: python python-3.x

Python 3.6

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

下面是我的项目结构:

.
└── components
    ├── __init__.py
    ├── extract
    │   └── python3
    |       ├── __init__.py
    │       └── extract.py
    └── transform
        └── python3
            ├── __init__.py
            └── preprocess.py

extract.py

from components.transform.python3.preprocess import my_function

if __name__ == '__main__':
    my_function()

preprocess.py

def my_function():
    print("Found me")

我运行python components/extract/python3/extract.py

我看到以下错误:

  

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

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

1 个答案:

答案 0 :(得分:2)

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

要使其正常运行,您应该:

  • cd到包含components的目录
  • .添加到Python路径:

    export PYTHONPATH='.'
    
  • 启动脚本:

    python components/extract/python3/extract.py
    

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

Found me