Python 在Windows上运行Flask应用程序会引发;尝试对非套接字的对象执行操作;

Python 在Windows上运行Flask应用程序会引发;尝试对非套接字的对象执行操作;,python,flask,Python,Flask,当运行一个基本的Flask应用程序时,我在shell中发现了这个错误,并且找不到如何解决这个问题 Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) <br/> Restarting with stat<br/> Debugger is active!<br/> Debugger pin code: 295-257-376<br/> Exception in thread Thr

当运行一个基本的Flask应用程序时,我在shell中发现了这个错误,并且找不到如何解决这个问题

 Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) <br/>
 Restarting with stat<br/>
 Debugger is active!<br/>
 Debugger pin code: 295-257-376<br/>
Exception in thread Thread-1:<br/>
Traceback (most recent call last):<br/>
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python35-32\lib\threading.py", line 923, in _bootstrap_inner
    self.run()<br/>
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python35-32\lib\threading.py", line 871, in run
    self._target(*self._args, **self._kwargs) <br/>
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python35-32\lib\site-packages\werkzeug\serving.py", line 656, in inner
    fd=fd)<br/>
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python35-32\lib\site-packages\werkzeug\serving.py", line 550, in make_server
    passthrough_errors, ssl_context, fd=fd)<br/>
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python35-32\lib\site-packages\werkzeug\serving.py", line 462, in __init__
    socket.SOCK_STREAM)<br/>
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python35-32\lib\socket.py", line 446, in fromfd
    nfd = dup(fd)<br/>
OSError: [WinError 10038] An operation was attempted on something that is not a socket

您当前正在尝试从全局python安装中执行此操作。在python项目中使用虚拟环境使每个项目的pip安装保持独立是一种“良好实践”

首先运行
pip安装virtualenv

然后,导航到项目文件夹并执行
virtualenv example virtual env
。这将创建一个带有自己的python和pip安装的新文件夹。(它还支持Python 3的虚拟环境。)

现在在shell中,执行激活虚拟环境的
\Scripts\activate
。现在,您执行的每个
pip安装
都将在此环境中(请注意shell光标前的环境名称)

在这里,运行
pip安装flask
并运行flask应用程序


如果您仍然遇到此问题,请尝试在管理员模式下运行CMD

我知道这不是核心问题的解决方案,但对我来说,问题只会在将调试标志设置为True时发生。如果您可以在不使用调试/重新加载功能的情况下使用应用程序,您可能希望尝试一下:

app.run(debug=False)

同时,我也在寻找一种在windows上实际使用调试模式的方法。

我在使用Python 3.6.0的windows上也遇到了类似的问题

这帮助了我: app.run(debug=False)


不知何故,调试模式似乎不起作用

在关闭防火墙(作为测试)后,您是否仍有错误?即使关闭防火墙也没有效果。这个错误与上面的错误相同,其根本原因是它试图以套接字的形式打开文件句柄,而Windows不支持。但是,它试图这样做似乎没有多大意义。您是否作为管理员用户运行此脚本?因为您的Python安装在管理员用户的帐户中,所以我尝试以管理员身份运行它,但没有成功。我之前也尝试过创建虚拟环境,并以管理员身份运行flask应用程序,但没有解决问题。
app.run(debug=False)