Форум программистов, компьютерный форум, киберфорум
Python: Flask
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 20.09.2016
Сообщений: 13
1

Не взлетает тест приложения на Flask

18.04.2017, 20:07. Показов 730. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую, коллеги!

Пытаюсь освоить Flask по вот этой мурзилке (M.Grinberg). Создал приложение в hello.py, дошло дело до структурированного приложения и blueprint-ов (Глава 7). И вот тут забуксовал. Вроде все сделал как в примерах, а при запуске $ python manage.py test выдает ошибку:

Кликните здесь для просмотра всего текста

Bash
1
2
3
4
5
6
7
8
(venv) mdadm@St52 ~/second-flask-mdadm $ python manage.py test
Traceback (most recent call last):
  File "manage.py", line 3, in <module>
    from app import create_app, db
  File "/home/mdadm/second-flask-mdadm/app/__init__.py", line 7, in <module>
    from main import main as main_blueprint
ImportError: No module named 'main'
(venv) mdadm@St52 ~/second-flask-mdadm $


Файлы:

1. config.py

Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import os
 
basedir = os.path.abspath(os.path.dirname(__file__))
 
class Config:
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard_to_guess_string'
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
    FLASKY_MAIL_SENDER = 'Flasky Admin <flasky@example.com>'
    FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
    
    @staticmethod
    def init_app(app):
        pass
 
class DevelopmentConfig(Config):
    DEBUG = True
    MAIL_SERVER = 'smtp.googlemail.com'
    MAIL_PORT = 587
    MAIL_USE_TLS = True
    MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
    SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL') or \
        'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')
 
class TestingConfig(Config):
    TESTING = True
    SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URL') or \
        'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')
 
class ProductionConfig(Config):
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
        'sqlite:///' + os.path.join(basedir, 'data.sqlite')
 
config = {
    'development': DevelopmentConfig,
    'testing': TestingConfig,
    'production': ProductionConfig,
    'default': DevelopmentConfig
}


2. manage.py

Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env python
import os
from app import create_app, db
from app.models import User, Role
from flask_script import Manager, Shell
from flask_migrate import Migrate, MigrateCommand
 
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
manager = Manager(app)
migrate = Migrate(app, db)
 
def make_shell_context():
    return dict(app=app, db=db, User=User, Role=Role)
manager.add_command("shell", Shell(make_context=make_shell_context))
manager.add_command('db', MigrateCommand)
 
@manager.command
def test():
    """Run the unit tests"""
    import unittest
    tests = unittest.TestLoader().discover('tests')
    unittest.TextTestRunner(verbosity=2).run(tests)
 
if __name__ == '__main__':
    manager.run()


3. app/__init__.py

Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from flask import Flask, render_template
from flask_bootstrap import Bootstrap
from flask_mail import Mail
from flask_moment import Moment
from flask_sqlalchemy import SQLAlchemy
from config import config
 
bootstrap = Bootstrap()
mail = Mail()
moment = Moment()
db = SQLAlchemy()
 
def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)
 
    bootstrap.init_app(app)
    mail.init_app(app)
    moment.init_app(app)
    db.init_app(app)
    
    # attach routes and custom error pages here
 
    from main import main as main_blueprint
    app.register_blueprint(main_blueprint)
 
    return app


Может кто-нить помочь объяснить логику запуска этого самого макета блюпринта? И почему он ругается на отсутствующее имя main - вообще непонятно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2017, 20:07
Ответы с готовыми решениями:

Ошибка приложения на Flask
OperationalError sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: item ...

Оценка приложения на Flask
Есть рест на фласке. Для сериализаци использовал marshmallow, marshmallow-sqlalchemy. В качестве...

Развертывание приложения Flask. Gunicorn + Nginx. Debian 8
Debian 8 Python 2.7 Необходимо развернуть приложение на linux машине. #!/usr/bin/env python #...

pytest тестирование Flask приложения с тестовой базой данных
proj/webapp/utils/test_fixtures.py import os import pytest from config import basedir from...

1
0 / 0 / 1
Регистрация: 20.09.2016
Сообщений: 13
19.04.2017, 20:23  [ТС] 2
Разобрался. Заработало после добавления точки в строку

Python
1
from .main import main as main_blueprint
В файле app/__init__.py
0
19.04.2017, 20:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2017, 20:23
Помогаю со студенческими работами здесь

Проблема с запуском сервера для веб-приложения на Flask
Сервер покупал на https://vds.selectel.ru Команды которые я использовал: Скрипт для запуска...

Ошибка при запуске web-приложения на Python + Flask + MySQL
Здравствуйте! Запуская проект на Python + Flask + MySQL столкнулся вот с какой проблемой: при...

Подключить PostgreSQL к Flask API и передавать данные таблицы в flask
Нужна срочная и большая помощь, надеюсь только на вас. Есть Python+QT5 (PYQT5) приложение. В...

Прием json-объекта | Flask, Flask-Security, Telegram-bot
Здравствуйте, помогите , пожалуйста, Flask знаю не очень, но что-то смог, писал бота с бд и...

Как отдаются .py файлы при деплое flask приложения на vps? Используется nginx + gunicorn
Мне известно, что Nginx умеет отдавать статические файлы (HTML + CSS). Но каким образом, при деплое...

Создание приложения - тест
Добрый вечер форумчане! Возникла мысля написать кроссплатформенное приложение тест. Вместо вопросов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru