ModuleNotFoundError:没有名为“项目”的模块

时间:2020-06-15 07:36:22

标签: python python-3.x web flask flask-sqlalchemy

我正在做一个烧瓶项目。 该项目的结构如下:

├── project
│   ├── config.py
│   ├── __init__.py
│   ├── models.py
│   ├── main
│   ├── static
│   ├── templates
│   └── users
└── run.py

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文件。 请帮助我。

1 个答案:

答案 0 :(得分:1)

最后,我发现我试图从项目模块内部导入db和Users。当我尝试从项目模块的外部目录访问db和Users时,我终于成功了。

我要导入数据库的初始目录: /home/aman/Desktop/websites/project/project 这会导致错误。

现在,我正在导入数据库的目录: /home/aman/Desktop/websites/project 效果很好。