在Windows上运行Django时出现WinError 10013错误

11

自从我遇到这个问题已经快一个月了,非常感谢您的帮助。在尝试登录我的Django Web App时,我遇到了OSError错误,位于/accounts/login/处。我能够登录127.0.0.1:8000/admin,但无法登录/accounts/login,它产生了错误代码:

OSError at /accounts/login/
[WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions

Request Method: POST
Request URL:    http://127.0.0.1:8000/accounts/login/
Django Version: 1.11.1
Exception Type: OSError
Exception Value:    
[WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions
Exception Location: C:\Python35-32\lib\socket.py in create_connection, line 702
Python Executable:  C:\Python35-32\myvenv_python3\Scripts\python.exe
Python Version: 3.5.2
Python Path:    
['C:\\Users\\Kaleab\\Desktop\\ecomstore',
 'C:\\Python35-32\\lib\\site-packages\\sqlalchemy-1.1.7-py3.5-win32.egg',
 'C:\\Python27',
 'C:\\Python35-32\\myvenv_python3\\Lib\\site-packages',
 'C:\\Python35-32',
 'C:\\Users\\Kaleab\\Desktop\\ecomstore',
 'C:\\Python35-32\\myvenv_python3\\Scripts\\python35.zip',
 'C:\\Python35-32\\DLLs',
 'C:\\Python35-32\\lib',
 'C:\\Python35-32\\myvenv_python3\\Scripts',
 'C:\\Python35-32\\lib\\site-packages',
 'C:\\Python35-32\\lib\\site-packages\\win32',
 'C:\\Python35-32\\lib\\site-packages\\win32\\lib',
 'C:\\Python35-32\\lib\\site-packages\\Pythonwin']
 

可能的原因和解决方案

  1. 原因:需要管理员权限才能访问套接字。 尝试的解决方法:通过进入虚拟环境来授予python.exe管理员权限。转到CMD.exe,右键单击,属性,授予管理员权限。

  2. 原因:端口可能已被其他程序使用。 尝试的解决方法:使用TCPView Windows程序检查端口,并查看端口8000是否被其他程序使用。

  3. 原因:防火墙和杀毒软件阻止套接字访问。 尝试的解决方法:当我尝试禁用防火墙和杀毒软件时,出现了另一个错误ConnectionRefusedError at accounts/login/ [WinError 10061] No connection could be made because the target machine actively refused it。

  4. 原因:Winsock发生故障。 尝试的解决方法:尝试并成功重置winsock,但这并没有解决问题。


https://dev59.com/tHE85IYBdhLWcg3wbS_1 - gliptak
@gliptak 我看到了那篇帖子,不幸的是没有解决我的问题。我不确定这是否是Windows 8.1中的用户账户控制(UAC)问题。虽然我可以作为管理员运行,但仍被拒绝套接字权限。我已经检查了防火墙和杀毒软件,但都没有用。 - Kaleab Woldemariam
8个回答

15

尽管我无法在stackoverflow建议的命令中看到端口8000被使用,但我会将在不同端口上运行服务器作为答案。使用: python manage.py runserver 8080。


1
对我来说起作用了。然而,知道端口8000在其他地方没有被使用还是很奇怪的。不管怎样,这个技巧对我有效。 - Abbas
这对我也起作用了,但不知道为什么起作用。 - manpikin
它对我起作用了,但我想知道为什么某个端口突然在别处被使用。谢谢。 - Sihat Afnan
这个对我也有效,但我没有任何东西在8000端口上,很奇怪它一开始失败了。 - Can

5
更换端口对我有用,我试图运行django服务器。这不是防火墙问题,只需在命令前面输入端口即可。 python manage.py runserver 7000

0

由于更改端口对@Kaleab有效,问题可能是另一个进程正在使用该端口。

我刚刚发现一个Firefox进程,它从端口5000到端口5000进行了回环连接(奇怪吧?)。一旦我关闭了Firefox,我就能够启动我的Flask服务器而不出现错误。

要查找使用该端口的进程,请在此处查看


1
当我在cmd中运行netstat -a -b时,其中一行是[svchost.exe] TCP [::]:8000 TIA-NEXCHMB1:0 LISTENING。我认为我的应用程序尝试使用已经被占用的端口,因为我试图在8000上运行django应用程序。所以我将端口更改为8080,然后它就可以工作了。 - manpikin

0
我因为我的杀毒软件(卡巴斯基)收到了错误信息。我所要做的就是在卡巴斯基的“管理程序”中将manage.py分配为“可信任”的程序。由于我使用的是外语版本,所以“可信任”是直接翻译的,可能在英文版本中名称不同。

0

可能有其他进程正在使用该端口。查找并终止该进程将使您能够使用8000端口。


0

使用8080端口号执行以下命令

python manage.py runserver 8080


0

只需重新启动计算机并运行
python manage.py runserver

python manage.py runserver 端口号

python manage.py runserver 8000

python manage.py runserver 8080


0

我使用不同的端口解决了这个问题:

python manage.py runserver 9999

9999 对我有用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接