«ImportError: невозможно импортировать имя» с помощью flask_sqlalchemy - PullRequest
0 голосов
/ 29 апреля 2018

Я работаю над созданием минимального приложения, как указано здесь .

Мой минимальный код ниже:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy


app = Flask(__name__)


app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////sandbox.db'
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username


if __name__ == '__main__':
    app.run(debug = True)

Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь импортировать объект db из интерактивной оболочки Python.

>>> from my_app import db

Я систематически получаю это сообщение об ошибке

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name db

Вот некоторый контекст:

Моя папка называется песочницей, здесь находятся файлы и их структура внутри нее

.
├── __init__.py
├── alembic
│   ├── README
│   ├── env.py
│   ├── env.pyc
│   ├── script.py.mako
│   └── versions
├── alembic.ini
├── hue.py
├── my_app.py
├── my_app.pyc
├── random_stuff.py
├── sqlalchemy.py
├── sqlalchemy.pyc
└── templates
    └── index.html

Я не могу понять, что я делаю неправильно, я, должно быть, упускаю что-то очень очевидное.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Похоже, мои проблемы были вызваны файлом sqlalchemy.py в той же папке. Поскольку я удалил этот файл, у меня больше нет проблемы, я думаю, имя этого файла конфликтовало с настоящим модулем sqlalchemy ...

0 голосов
/ 29 апреля 2018

Ваш вопрос не имеет полного контекста, но я предполагаю, что указанный выше файл называется my_app/app.py или похожим, и каталог не содержит файл __init__.py. Python нужен этот файл, чтобы увидеть каталог как модуль, из которого он может импортировать. Добавьте пустой файл с именем my_app/__init__.py, и проблема должна быть решена

...