运行简单的Flask应用程序时追溯

时间:2016-04-14 17:08:47

标签: python python-3.x

编辑:这个问题显然有答案

Quickstart Flask application failing for some reason

以及(关闭且明显固定的)GitHub问题:

https://github.com/pallets/werkzeug/issues/798

不幸的是,即使使用Werkzeug 0.12-dev(来自GitHub的最新代码),我仍然遇到了这个问题。

我刚开始在Windows上使用Python 3.4开发一个简单的Flask应用程序。从字面上看,目前这是fileserve.py的唯一内容。

import os.path

from flask import abort, Flask


base_directory = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config.from_pyfile(os.path.join(base_directory, 'fileserve.cfg'))


@app.route('/')
def index():
    abort(403)


if __name__ == '__main__':
    app.run(debug=True)

当我尝试运行应用程序时,我得到以下回溯:

Traceback (most recent call last):
  File "fileserve.py", line 22, in <module>
    app.run(debug=True)
  File "C:\Users\jscholes\dev\fileserve\env\lib\site-packages\flask\app.py", line 772, in run
    run_simple(host, port, self, **options)
  File "C:\Users\jscholes\dev\fileserve\env\lib\site-packages\werkzeug\serving.py", line 633, in run_simple
    application = DebuggedApplication(application, use_evalex)
  File "C:\Users\jscholes\dev\fileserve\env\lib\site-packages\werkzeug\debug\__init__.py", line 249, in __init__
    if self.pin is None:
  File "C:\Users\jscholes\dev\fileserve\env\lib\site-packages\werkzeug\debug\__init__.py", line 259, in _get_pin
    self._pin, self._pin_cookie = get_pin_and_cookie_name(self.app)
  File "C:\Users\jscholes\dev\fileserve\env\lib\site-packages\werkzeug\debug\__init__.py", line 169, in get_pin_and_cookie_name
    h.update('cookiesalt')
TypeError: Unicode-objects must be encoded before hashing

即使使用简单的&#34; hello world&#34;也会发生此错误。应用程式:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
    return 'Hello world'
app.run(debug=True)

Flask对Python 3的支持是不是很好?这有解决方法吗?没有调试模式选项的工作不是一个很好的前景。

1 个答案:

答案 0 :(得分:0)

升级您的werkzeug安装。

在我的安装中,使用werkzeug.__version__ == 0.11.7,第169行显示:

h.update(b'cookiesalt')