Python Flask - проблема с точкой входа и структурой приложения при развертывании в Ubuntu - PullRequest
0 голосов
/ 04 февраля 2019

Я работаю над приложением фляги, которое я могу использовать на своей локальной машине, но когда я пытаюсь развернуть его в Digital Ocean Ubuntu, у меня возникают проблемы с точкой входа и структурой приложения.

Файл "/home/ubuntu/.local/lib/python2.7/site-packages/flask/cli.py ", строка 246, в locate_app" Не удалось импортировать "{имя}". '. Формат (имя = имя_модуля) NoAppException:Не удалось импортировать «webapp».

Структура приложения:

home >> ubuntu >>

>>s_chaser

        |-- FlaskApp
        |   |-- FlaskApp
        |   |   |-- __pycache__
        |   |   |-- app
        |   |   |   |-- __pycache__
        |   |   |   |-- static
        |   |   |   |-- templates
                |   |-- __init__.py
                |   |-- errors.py
                |   |-- forms.py
                |   |-- routes.py
                |   |-- models.py
                |                    
                |-- __init__.py
                |-- config.py
                |-- scdb1_local.db
        |   |   |-- logs
        |   |   |-- migrations
        |   |   |-- scripts
        |   |   |-- static
        |   |   |-- s_venv
                |-- s_chaser.py

FlaskApp / s_chaser.py

from app.models import User, Blogpost


@app.shell_context_processor
def make_shell_context():
    return {'db': db, 'User': User, 'Blogpost': Blogpost} 



FlaskApp / config.py

import os
from dotenv import load_dotenv


basedir = os.path.abspath(os.path.dirname(__file__))
load_dotenv(os.path.join(basedir, '.env'))

class Config(object):
    # ...
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'

    SQLALCHEMY_DATABASE_URI = os.environ.get('mysql://root:<password>@localhost/scdb1') or \
        'sqlite:///' + os.path.join(basedir, 'scdb1_local.db')
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    MAIL_SERVER = os.environ.get('MAIL_SERVER')
    MAIL_PORT = int(os.environ.get('MAIL_PORT') or 25)
    MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS') is not None
    MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
    ADMINS = ['mygmail@gmail.com']

FlaskApp / app / init .py

from flask import Flask
from config import Config, basedir
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_sqlalchemy_session import flask_scoped_session
from flask_login import LoginManager
from sqlalchemy.orm import sessionmaker, Query
from sqlalchemy import create_engine, func
import logging
from logging.handlers import SMTPHandler, RotatingFileHandler
import sys
import os


app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
login = LoginManager(app)
login.login_view = 'login'

engine = create_engine(os.environ.get('mysql://root:<password>@localhost/scdb1') or \
        'sqlite:///' + os.path.join(basedir, 'scdb1_local.db'))

session_factory = sessionmaker(bind=engine)
session = flask_scoped_session(session_factory, app)

from app import routes, models, errors

Я пытаюсь установить точку входа: echo "export FLASK_APP= s_chaser.py ">> ~ / .profile

Я выйду из системы и снова войду в систему, и при запуске колбы я получаю:

File "/home/ubuntu/.local/lib/python2.7/site-packages/flask/cli.py", line 246, in locate_app
    'Could not import "{name}".'.format(name=module_name)
NoAppException: Could not import "s_chaser". 

Когда я задаю полный путь к s-chaser.py и попробуйте запустить колбу, я получаю

$ export FLASK_APP = s_chaser / FlaskApp / FlaskApp / s_chaser.py

$ колбу

File "/home/ubuntu/surfchaser/FlaskApp/FlaskApp/app/__init__.py", line 2, in <module>
    from config import Config, basedir
ImportError: No module named config

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...