Как правильно импортировать экземпляр класса в файл, находящийся в том же каталоге?

Обновленный вопрос:

Как правильно импортировать объекты из других модулей в файлы модуля app и admin и решить проблему ошибки "attempted relative import with no known parent package"?


Структура проекта:
```
app
    __init__.py
    models.py
    views.py
admin
    __init__.py
```

Файл `__init__.py`:
```python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager

app = Flask(__name__)
db = SQLAlchemy(app)
login_manager = LoginManager(app)
```

Файл `models.py`:
```python
from app import db, login_manager
```
или
```python
from . import db
```

Файл `views.py`:
```python
from . import db
```

Ошибка:
```
File "C:\Users\xabor\PycharmProjects\flask\TODO-app\app\models.py", line 1, in 
from . import app
ImportError: attempted relative import with no known parent package
```

Также, я хотел бы уточнить, как правильно импортировать объекты из модуля `app` и `admin` в `admin/__init__.py`:
```python
from .. import app, db, admin
```
  • 30 октября 2023 г. 15:49
Ответы на вопрос 2
В вашем случае, чтобы правильно импортировать экземпляр класса из файла, находящегося в том же каталоге, вы можете использовать следующий синтаксис:

```python
from .имя_файла_без_расширения import ИмяКласса
```

Например, если у вас есть файлы `models.py` и `views.py` в каталоге `app`, и вы хотите импортировать экземпляр класса `MyClass` из файла `models.py` в файл `views.py`, вы можете сделать это следующим образом:

```python
from .models import MyClass
```

Важно помнить, что перед именем файла ставится точка (`.`), чтобы указать, что импорт должен быть осуществлен из текущего каталога.
- Импорты в Python определяются на основе того, какие пути указаны в переменной PYTHONPATH. Импорты производятся относительно этих путей. Для более подробной информации рекомендуется обратиться к официальной документации.
- Исходя из моего опыта, рекомендуется не использовать относительные импорты.
Похожие вопросы