我正在做一个烧瓶项目。该项目的结构如下:
├── project
│ ├── config.py
│ ├── __init__.py
│ ├── models.py
│ ├── main
│ ├── static
│ ├── templates
│ └── users
└── run.py
运行
from project import create_app
app = create_app()
if __name__=="__main__":
app.run(debug=True)
__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from project.config import Config
db = SQLAlchemy()
def create_app(config_class=Config):
app = Flask(__name__)
app.config.from_object(Config)
db.init_app(app)
from project.main.routes import main
from project.users.routes import users
app.register_blueprint(main)
app.register_blueprint(users)
return app
models.py
from flask import current_app
from project import db
class Users(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
password = db.Column(db.String(60), nullable=False)
posts = db.relationship('Post', backref='author', lazy=True)
def __repr__(self):
return f"User('{self.username}', '{self.email}', '{self.image_file}')"
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
content = db.Column(db.Text, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
def __repr__(self):
return f"Post('{self.title}', '{self.date_posted}')"
我的问题是当我在project/project
目录中打开终端并打开python提示符并从models.py导入Users或Post时,它给了我错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/aman/Desktop/websites/project/project/models.py", line 2, in <module>
from project import db
ModuleNotFoundError: No module named 'project'
但是很明显,项目确实存在,并且也是python模块,因为我已经在项目目录中创建了一个init .py文件。请帮我。
最后,我发现我试图从项目模块内部导入数据库和用户。当我尝试从项目模块的外部目录访问db和Users时,我终于成功了。
我正在导入db:的初始目录/home/aman/Desktop/websites/project/project
,这将导致错误。
现在,我正在导入目录db:/home/aman/Desktop/websites/project
效果很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句