我正在努力创建一个最小的应用程序作为outlined here。
我的最小代码如下:
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)
我遇到的问题是当我尝试从交互式Python shell导入db对象时。
>>> from my_app import db
我系统地收到此错误消息
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name db
这是一些背景:
我的文件夹名为sandbox,这里是文件及其结构
.
├── __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
我无法找出我做错了什么,我一定错过了一些非常明显的事情。
您的问题没有完整的上下文,但我认为上面的文件名为my_app/app.py
或类似,目录不包含__init__.py
文件。 Python需要该文件将目录视为可以从中导入的模块。添加一个名为my_app/__init__.py
的空文件,问题应该解决了
看起来我的问题是由同一文件夹中名为sqlalchemy.py的文件引起的。由于我删除了这个文件,我不再有问题,我猜这个文件的名称与真正的sqlalchemy模块有冲突...