【问题标题】:Flask demo application not working烧瓶演示应用程序不起作用
【发布时间】:2015-11-10 15:43:31
【问题描述】:

我想尝试一个 Flask 最小应用程序。

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

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

一切正常。如果我在run() 之前添加app.debug = True,它不起作用。

错误是:

Traceback (most recent call last):
  File "app.py", line 10, in <module>
    app.run()
  File "C:\Python34\lib\site-packages\flask\app.py", line 772, in run
    run_simple(host, port, self, **options)
  File "C:\Python34\lib\site-packages\werkzeug\serving.py", line 666, in run_simple
    os.set_inheritable(s.fileno(), True)
OSError: [Errno 9] Bad file descriptor

我使用了 Python 3.4.3、Flask 0.10.1、Werkzeug 0.11.1 和 Windows 10。有无 virtualenv 的行为都是一样的。

【问题讨论】:

  • 我也看到了这个。它似乎在设置文件重新加载器的代码中,但据我所知。
  • 这适用于我的电脑(macbook pro)。你可以在虚拟机或不同的计算机上试试这个吗?
  • 我在另一台具有相同程序和软件版本的PC上试用。结果是一样的。
  • 我在 Windows 10 上。据我所知,即使打开套接字也会发生这种情况:s = socket.socket() os.fstat(s.fileno())
  • 在 Windows 10 上出现同样的问题。尝试以管理员身份运行,没有修复。但是,在关闭调试模式的情况下运行它可以正常工作。

标签: python flask werkzeug


【解决方案1】:

我在使用 Python 3.4.2 的 Windows 7 上遇到了同样的问题。我最终不得不将Werkzeug 从版本0.11.1 降级为0.10.4。完全披露,我不是一个 Python 开发人员,因为我在日常工作中编写 .NET 并且正在学习 Python,所以我无法在这里完全解释其中的原因。另外,我只是通过转到Pypi 并搜索“Werkzeug”来选择一个版本。如果您不知道,pypi.python.org 是您的 pip 安装源;-)。

为了实现这一点,我最终卸载了 Werkzeug,然后通过在 pip 中指定版本来重新安装它。这对我的全局环境和项目中的“virtualenv”都有效。

pip uninstall Werkzeug
pip install Werkzeug==0.10.4

编辑

这是我的requirements.txt 文件的内容。您可以通过运行命令pip install -r requirements.txt 卸载已安装的所有不同软件包并安装这些特定版本,假设您的工作目录是 requirements.txt 所在的位置并且您的 virtualenv 当前处于活动状态。在 Windows 中,如果需要,您可以使用相对路径 :-)。

itsdangerous==0.24
Werkzeug==0.10.4
WTForms==2.0.2
SQLAlchemy==1.0.9
MarkupSafe==0.23
Jinja2==2.8
Flask==0.10.1
Flask-SQLAlchemy==2.1
Flask-WTF==0.10

【讨论】:

  • 将我的 Werkzeug 版本固定到 0.10.4 成功了!非常感谢。我会看看我是否能确定导致这种情况的变化。看起来这个问题已经修复了:github.com/mitsuhiko/werkzeug/issues/805
猜你喜欢
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 2021-09-02
  • 2018-11-03
  • 2018-10-06
相关资源
最近更新 更多