'Flask: ImportError: attempted relative import with no known parent package
I really tried to solve this error with google, but could not find a solution that works. Maybe one of you has an idea.
My structure is this:
app/
|- static/
| |- js/
| `- styles/
|- templates/
|- app.py
|- auth.py
|- db.sqlite
|- main.py
|- models.py
`- requirements.txt
app.py:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
return app
app = create_app()
models.py:
from flask_login import UserMixin
from . import db
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
fname = db.Column(db.String(100))
lname = db.Column(db.String(100))
email = db.Column(db.String(100), unique=True)
password = db.Column(db.String(100))
As an error i got this one:
File "C:\path\Flask_app\app\models.py", line 2, in <module>
from . import db
ImportError: attempted relative import with no known parent package
I dont know what to change. In main.py i got a notice:
"db" is not accessed
Solution 1:[1]
You are missing an __init__.py to mark your project as a proper python package:
.
??? app
? ??? app.py
? ??? auth.py
? ??? db.sqlite
? ??? __init__.py
? ??? main.py
? ??? models.py
? ??? static
? ? ??? js
? ? ??? styles
? ??? templates
??? requirements.txt
works with python -m app.app or python app/app.py from the project root. But still, you likely want a setup.py or a pyproject.toml, e.g. to actually specify that you want to distribute your static/ files (and from the looks of it a sqlite-database?) with your package.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
