簡體   English   中英

ModuleNotFoundError:沒有名為“項目”的模塊

[英]ModuleNotFoundError: No module named 'project'

我正在研究 flask 項目。 項目結構如下:

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

運行.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

模型.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 導入用戶或帖子時,它給了我錯誤:

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 時,我終於成功了。

我正在導入數據庫的初始目錄: /home/aman/Desktop/websites/project/project給出錯誤。

現在,我正在導入的目錄 db: /home/aman/Desktop/websites/project效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM