我如何从这样的目录结构中正确导入类?

问题描述

我有一个这样的Python目录,并且我正在main_script.py上运行src

每当我尝试将类从class_files导入main_script.py时,都会出现错误。我该怎么做呢?

 - src/
   - jobs/
   - _init_.py
    - my_team/
      - _init_.py
     - my_project/
       - _init_.py
       - main_script.py
      - class_files/
        - class1.py
        - class2.py
        - class3.py
        - __init__.py

我已经尝试进行绝对导入,但这也没有用。

from jobs.my_team.my_project.class_files import *

解决方法

jobs.my_team.my_project.class_files仅在每个组成部分都是Python软件包的情况下才有效。例如,

src/
    jobs/
        __init__.py
        my_team/
            __init__.py
            my_project/
                __init__.py
                main_script.py
                class_files/
                    class1.py
                    class2.py
                    class3.py
                    __init__.py

您的导入树必须由Python包组成。如果其中没有__init__.py,则该目录不是Python软件包。就这么简单。

此外,要使其正常工作,您的src/目录需要位于$PYTHONPATH环境变量中,或者在运行时添加到sys.path