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

Узнай цену своей работы

Формулировка задачи:

Приветствую, коллеги! Пытаюсь освоить Flask по вот этой мурзилке (M.Grinberg). Создал приложение в hello.py, дошло дело до структурированного приложения и blueprint-ов (Глава 7). И вот тут забуксовал. Вроде все сделал как в примерах, а при запуске $ python manage.py test выдает ошибку:
Листинг программы
  1. (venv) mdadm@St52 ~/second-flask-mdadm $ python manage.py test
  2. Traceback (most recent call last):
  3. File "manage.py", line 3, in <module>
  4. from app import create_app, db
  5. File "/home/mdadm/second-flask-mdadm/app/__init__.py", line 7, in <module>
  6. from main import main as main_blueprint
  7. ImportError: No module named 'main'
  8. (venv) mdadm@St52 ~/second-flask-mdadm $
Файлы: 1. config.py
Листинг программы
  1. import os
  2. basedir = os.path.abspath(os.path.dirname(__file__))
  3. class Config:
  4. SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard_to_guess_string'
  5. SQLALCHEMY_COMMIT_ON_TEARDOWN = True
  6. FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
  7. FLASKY_MAIL_SENDER = 'Flasky Admin <flasky@example.com>'
  8. FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
  9. @staticmethod
  10. def init_app(app):
  11. pass
  12. class DevelopmentConfig(Config):
  13. DEBUG = True
  14. MAIL_SERVER = 'smtp.googlemail.com'
  15. MAIL_PORT = 587
  16. MAIL_USE_TLS = True
  17. MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
  18. MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
  19. SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL') or \
  20. 'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')
  21. class TestingConfig(Config):
  22. TESTING = True
  23. SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URL') or \
  24. 'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')
  25. class ProductionConfig(Config):
  26. SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
  27. 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
  28. config = {
  29. 'development': DevelopmentConfig,
  30. 'testing': TestingConfig,
  31. 'production': ProductionConfig,
  32. 'default': DevelopmentConfig
  33. }
2. manage.py
Листинг программы
  1. #!/usr/bin/env python
  2. import os
  3. from app import create_app, db
  4. from app.models import User, Role
  5. from flask_script import Manager, Shell
  6. from flask_migrate import Migrate, MigrateCommand
  7. app = create_app(os.getenv('FLASK_CONFIG') or 'default')
  8. manager = Manager(app)
  9. migrate = Migrate(app, db)
  10. def make_shell_context():
  11. return dict(app=app, db=db, User=User, Role=Role)
  12. manager.add_command("shell", Shell(make_context=make_shell_context))
  13. manager.add_command('db', MigrateCommand)
  14. @manager.command
  15. def test():
  16. """Run the unit tests"""
  17. import unittest
  18. tests = unittest.TestLoader().discover('tests')
  19. unittest.TextTestRunner(verbosity=2).run(tests)
  20. if __name__ == '__main__':
  21. manager.run()
3. app/__init__.py
Листинг программы
  1. from flask import Flask, render_template
  2. from flask_bootstrap import Bootstrap
  3. from flask_mail import Mail
  4. from flask_moment import Moment
  5. from flask_sqlalchemy import SQLAlchemy
  6. from config import config
  7. bootstrap = Bootstrap()
  8. mail = Mail()
  9. moment = Moment()
  10. db = SQLAlchemy()
  11. def create_app(config_name):
  12. app = Flask(__name__)
  13. app.config.from_object(config[config_name])
  14. config[config_name].init_app(app)
  15. bootstrap.init_app(app)
  16. mail.init_app(app)
  17. moment.init_app(app)
  18. db.init_app(app)
  19. # attach routes and custom error pages here
  20. from main import main as main_blueprint
  21. app.register_blueprint(main_blueprint)
  22. return app
Может кто-нить помочь объяснить логику запуска этого самого макета блюпринта? И почему он ругается на отсутствующее имя main - вообще непонятно.

Решение задачи: «Не взлетает тест приложения на Flask»

textual
Листинг программы
  1. from .main import main as main_blueprint

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут