绝对导入结果在ModuleNotFoundError中

乔纳森·波特

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文件添加到包含模块以及顶级包目录的目录中。

Serge Ballesta

好的,导入要求顶层包在Python PATH(sys.path)中可用

因此,要使其正常工作,您应该:

  • cd到包含 components
  • 添加.到Python PATH:

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

    python components/extract/python3/extract.py
    

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

Found me

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章