Я работаю над приложением фляги, которое я могу использовать на своей локальной машине, но когда я пытаюсь развернуть его в 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