Python3: проблемы с импортом классов - PullRequest
0 голосов
/ 11 июля 2019

Предположим, у нас есть такое дерево:

└── my_project
    ├── A.py
    ├── __init__.py
    ├── my_apps
        ├── app_framework.py
        ├── app1.py
        ├── app2.py
        ├── __init__.py

Внутри папки my_apps есть общий класс, определенный в app_framework.py. Все остальные файлы определяют собственный дочерний класс на его основе.

Файлы будут выглядеть так:

app_framework.py:

Class App():
    ...

app1.py:

from app_framework import App
Class MyApp1(APP):
    ...
    ...

app2.py

from app_framework import App
Class MyApp2(APP):
    ...
    ...

Итак, в папке моего проекта я хочу использовать

from my_apps import MyApp1, MyApp2

Но я получил две ошибки:

  1. Сначала ModuleNotFoundError: No module named app_framework. Я частично исправляю это, меняя from app_framework import App на from .app_framework import App

  2. ImportError: cannot import name 'MyApp1' from 'my_apps'

Я могу использовать from my_apps.app1 import MyApp1, MyApp2, но я бы предпочел from my_apps import MyApp1, MyApp2, который выглядит более кратким. Как это сделать?

1 Ответ

3 голосов
/ 11 июля 2019

Создайте файл __init__.py в my_apps и импортируйте необходимые классы в этот файл:

# my_project/my_apps/__init__.py
from .app1 import MyApp1
from .app2 import MyApp2

Тогда в вашем A.py вы можете сделать:

from .my_apps import MyApp1, MyApp2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...