解決したいこと
Flaskを使用して管理画面を作成したいと考えております。
FlaskからMySQLに接続し、SQLAlchemyを使用して、テーブルの作成を行いました。
下記サイトを参考に実装しました。
その後、flask runを実行し、Web上で確認した際にInternalServerErrorが出てしまいます。
下記エラーログになります。
発生している問題・エラー
Traceback (most recent call last): File "/var/www/skip/app.py", line 2, in <module> from skip.database import init_db ModuleNotFoundError: No module named 'skip' unable to load app 0 (mountpoint='') (callable not found or import error)
階層構造
|app/
|└ run.py
|└ skip/
| └ app.py
| └ database.py
| └ config.py
| └ models/
| └ __ init__.py
| └ models.py
環境
・CentOS7
・Python:3.6
・Flask:2.0.2
・Flask-SQLAlchemy:2.5.1
・SQLAlchemy:1.4.27
・Flask-Migrate:3.1.0
該当するソースコード
run.py
1from skip.app import app 2 3if __name__ == '__main__': 4 app.run()
skip/app.py
1from flask import Flask, render_template 2from skip.database import init_db 3import skip.models 4 5def create_app(): 6 app = Flask(__name__) 7 8 app.config.from_object('skip.config.Config') 9 init_db(app) 10 11 return app 12 13app = create_app() 14 15@app.route('/') 16def home(): 17 title = "管理画面" 18 return render_template('index.html', title=title)
skip/database.py
1from flask_sqlalchemy import SQLAlchemy 2from flask_migrate import Migrate 3 4# FlaskがSQLAlchemyを使えるように初期化 5db = SQLAlchemy() 6 7def init_db(app): 8 db.init_app(app) 9 Migrate(app, db)
skip/config.py
1import os 2 3class SystemConfig: 4 # Flask 5 DEBUG = True 6 7 # DBの接続情報を設定 8 SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{user}:{password}@{host}/skip?charset=utf8'.format(**{ 9 'user': os.getenv('DB_USER', 'root'), 10 'password': os.getenv('DB_PASSWORD', 'xxxx_xxxx'), 11 'host': os.getenv('DB_HOST', '127.0.0.1'), 12 }) 13 SQLALCHEMY_TRACK_MODIFICATIONS = False 14 SQLALCHEMY_ECHO = False 15 16Config = SystemConfig
skip/models/models.py
1from skip.database import db 2 3class User(db.Model): 4 __tablename__ = 'users' 5 6 id = db.Column(db.Integer, primary_key=True) 7 nickname = db.Column(db.String(30), unique=True, nullable=True) 8 email = db.Column(db.String(300), unique=True, nullable=True) 9 password = db.Column(db.Text, nullable=True) 10 first_name = db.Column(db.String(30), nullable=True) 11 last_name = db.Column(db.String(30), nullable=True)
skip/models/__init__.py
1from .models import User 2 3__all__ = [ 4 User, 5]
自分で試したこと
エラーログから、app.pyの「from skip.database」という指定が原因なのかと思い、
「from database」という指定に変更したところ、下記エラーログに変わりました。
Traceback (most recent call last): File "/var/www/skip/app.py", line 2, in <module> from database import init_db File "./database.py", line 1, in <module> from flask_sqlalchemy import SQLAlchemy ModuleNotFoundError: No module named 'flask_sqlalchemy' unable to load app 0 (mountpoint='') (callable not found or import error)
ただ、flask_sqlalchemyはpipにてインストール出来ており、何が原因なのか分からない状況です。
ModuleNotFoundErrorについて、調べて試行錯誤してみたのですが、エラー解決には繋がらず、何か原因がわかる方がいらっしゃいましたら、ご教授頂けますと幸いです。
その他に必要な情報がありましたら提示いたします。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/01/19 13:56 編集