首页 > 解决方案 > 如何从这样的目录结构中正确导入类?

问题描述

我有一个像这样的 Python 目录,我main_script.pysrc.

每当我尝试从class_filesinto导入类时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 *

标签: pythonclassoop

解决方案


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在运行时添加。


推荐阅读