尝试使用bluerint

时间:2015-10-13 09:53:35

标签: python-2.7 flask flask-restful

我使用PythonAnywhere免费版试图为应用程序设置一个小型休息服务。我也使用带蓝图的烧瓶试图这样做。 我的文件结构如下所示

mysite/
    applicaction/
          __init__.py,
          models.py,
          config.py

flask_app.py(与mysite包相同)

我使用flask_app.py运行下面显示的服务器。

from application import __init__ as appmain

if __name__ == "__main__":
myapp = appmain.getapp()
myapp.run()

在我的应用程序文件夹中,我使用“ init .py”来设置我的“app”实例以及名为“myblueprint”的蓝图(代码如下所示)

from flask import Flask, Blueprint
from flask.ext.sqlalchemy import SQLAlchemy

db = None
app = None
serviceblueprint = None

def init_app():
    app = Flask(__name__)
    app.config.from_object('config')
    serviceblueprint = Blueprint('serviceblueprint', __name__)
    app.register_blueprint(serviceblueprint)
    db = SQLAlchemy(app)

def get_app():
    init_app()
    return app

然后我尝试使用已导入“serviceblueprint”的service.py脚本中的已注册蓝图定义一个简单的路径装饰器。理想情况下,像serive.py模块这样的id包含一个可以处理路由的类(不确定这是否可行)但是当我到达时它会越过那个桥。现在它是一个基本脚本(如下所示)

from application import serviceblueprint

@serviceblueprint.route('/')
def get():
    return "<h1>Yahoo!!!</h1>"

不幸的是,当我将主url加载到浏览器中时,我只是得到一个错误页面,而且我在服务器上不了解相对通用的tracelog。它至少似乎没有指向我的代码中的任何内容。除了“ImportError:无法导入名称应用程序”,但我没有在我的任何脚本中导入“app”。

2015-10-13 09:46:59,068 :Traceback (most recent call last):
2015-10-13 09:46:59,068 :  File "/bin/user_wsgi_wrapper.py", line 134, in __call__
2015-10-13 09:46:59,068 :    self.error_log_file.logger.exception("Error running WSGI application")
2015-10-13 09:46:59,068 :  File "/usr/lib/python2.7/logging/__init__.py", line 1185, in exception
2015-10-13 09:46:59,069 :    self.error(msg, *args, **kwargs)
2015-10-13 09:46:59,069 :  File "/usr/lib/python2.7/logging/__init__.py", line 1178, in error
2015-10-13 09:46:59,069 :    self._log(ERROR, msg, args, **kwargs)
2015-10-13 09:46:59,069 :  File "/usr/lib/python2.7/logging/__init__.py", line 1270, in _log
2015-10-13 09:46:59,069 :    record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra)
2015-10-13 09:46:59,070 :  File "/usr/lib/python2.7/logging/__init__.py", line 1244, in makeRecord
2015-10-13 09:46:59,070 :    rv = LogRecord(name, level, fn, lno, msg, args, exc_info, func)
2015-10-13 09:46:59,070 :  File "/usr/lib/python2.7/logging/__init__.py", line 284, in __init__
2015-10-13 09:46:59,070 :    self.threadName = threading.current_thread().name
2015-10-13 09:46:59,070 :  File "/usr/lib/python2.7/threading.py", line 1160, in currentThread
2015-10-13 09:46:59,070 :    return _active[_get_ident()]
2015-10-13 09:46:59,070 :  File "/bin/user_wsgi_wrapper.py", line 126, in __call__
2015-10-13 09:46:59,071 :    app_iterator = self.app(environ, start_response)
2015-10-13 09:46:59,071 :  File "/bin/user_wsgi_wrapper.py", line 140, in import_error_application
2015-10-13 09:46:59,071 :    raise e
2015-10-13 09:46:59,071 :ImportError: cannot import name app

如果有人能帮助我,我会感激不尽。我是烧瓶的新手,所以显然我可能会犯一个非常简单的错误。谢谢!

1 个答案:

答案 0 :(得分:1)

如果您检查所有当前托管网站所在的webapps选项卡,您将看到一个wsgi.py文件。在其中,您将看到它尝试从项目文件中导入app

确保能够成功完成此操作。