ImportError: cannot import name 'create_db' from 'flsite'
Помогите плиз исправить ошибку. При импорте возникает такая ошибка. Создаю базу данных в консоли вызвал Python и пытаюсь импортировать
from flsite import create_db
Вот мой код:
import sqlite3
import os
from flask import Flask, render_template, url_for, request, flash, session, redirect, abort
DATABASE = '/tmp/flsite.db'
DEBUG = True
app.secret_key = 'shvishdhhs5453bkkbhk53'
app = Flask (__name__)
app.config.from_object(__name__)
app.config.update(dict(DATABASE=os.path.join(app.root_path,'flsite.db')))
def connect_db():
conn = sqlite3.connect(app.config['DATABASE'])
conn.row_factory = sqlite3.Row
return conn
def create_db():
db = connect_db()
with app.open_resource('sq_db.sql',mode='r') as f:
db.cursor().executescript(f.read())
db.commit()
db.close()
menu = [{"name": "Установка", "url": "install-flask"},
{"name": "Первое приложение", "url": "first-app"},
{"name": "Обратная связь", "url": "contact"}]
@app.route("/")
def index():
print( url_for('index') )
return render_template('index.html', menu=menu)
@app.route("/about")
def about():
print( url_for('about') )
return render_template('about.html', title="О сайте", menu=menu)
@app.route("/contact", methods=["POST", "GET"])
def contact():
if request.method == 'POST':
if len(request.form['username']) > 2:
flash('Сообщение отправленно', category='success')
else:
flash('Ошибка отправки', category='error')
return render_template('contact.html', title="Обратная связь", menu=menu)
@app.route("/profile/<username>")
def profile(username):
if 'userLogged' not in session or session['userLogged'] != username:
abort(401)
return f"Профиль пользователя: {username}"
@app.route("/login", methods=["POST", "GET"])
def login():
if 'userLogged' in session:
return redirect(url_for('profile', username=session['userLogged']))
elif request.method == 'POST' and request.form["username"] == "self" and request.form["psw"] == "123":
session['userLogged'] = request.form['username']
return redirect(url_for('profile', username=session['userLogged']))
return render_template('login.html', title="Авторизация", menu=menu)
@app.errorhandler(404)
def pageNotFount(error):
return render_template('page404.html', title="Страница не найдена", menu=menu)
if __name__ == "__main__":
app.run(debug=True)
А вот сама ошибка:
from flsite import create_db
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name 'create_db' from 'flsite' (C:\Users\Пользователь\Desktop\SMblogy\flsite.py)
Ответы (1 шт):
Автор решения: DGDays
→ Ссылка
Смотри, ответ довольно прост. Тебе надо использовать файл __init__.py, что бы питон определял папку как модуль. Если твой модуль размещён в папке, то импорт будет выглядеть так:
import папка.файл.функция
Если же тебе надо чтобы просто по названию модуля(flsite) можно было импортировать всё, то тебе надо создать в папке flsite файлы __init__.py и main.py И импорт будет выглядеть так:
import flsite.функция