编辑:这个问题显然有答案
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的支持是不是很好?这有解决方法吗?没有调试模式选项的工作不是一个很好的前景。
答案 0 :(得分:0)
升级您的werkzeug安装。
在我的安装中,使用werkzeug.__version__ == 0.11.7
,第169行显示:
h.update(b'cookiesalt')