
WinError 10013错误通常是由于端口冲突引起的,通过修改Streamlit的默认端口,可以有效解决此问题。
当你在CMD中运行Streamlit应用时,可能会遇到如下错误信息:
PermissionError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions
这个错误表明Streamlit尝试使用的端口已经被其他程序占用,导致权限错误。解决此问题的关键在于修改Streamlit使用的端口。
解决方法:修改Streamlit的默认端口
Streamlit允许用户自定义服务器端口。可以通过创建一个.streamlit/config.toml文件,并在其中配置server.port参数来修改端口。
-
创建配置文件:
在你的Streamlit应用所在的目录下,创建一个名为.streamlit的文件夹(如果不存在)。在该文件夹下,创建一个名为config.toml的文件。
-
编辑配置文件:
使用文本编辑器打开config.toml文件,并添加以下内容:
[server] port = 80
在这个配置中,我们将Streamlit的端口设置为80。你可以根据实际情况选择一个未被占用的端口,例如8000、8080等。 请注意,如果选择的端口小于1024,可能需要管理员权限才能运行Streamlit。
-
重启Streamlit应用:
保存config.toml文件,并在CMD中重新运行Streamlit应用:
streamlit run main.py
如果一切顺利,Streamlit应用应该能够成功启动,而不会再出现WinError 10013错误。
示例代码:
以下是一个简单的Streamlit应用示例,你可以将其保存为main.py,并在CMD中运行:
import streamlit as st
import pandas as pd
st.write("""
# 我的第一个Streamlit应用
你好,*世界!*
""")
df = pd.DataFrame({
'col1': [1, 2, 3],
'col2': [4, 5, 6]
})
st.write(df)注意事项:
- 确保选择的端口未被其他程序占用。你可以使用netstat -a命令(在CMD中运行)来查看当前系统上正在使用的端口。
- 如果修改端口后仍然出现问题,可以尝试重启计算机。
- 如果你的Streamlit应用需要通过防火墙访问,请确保防火墙允许Streamlit使用的端口。
- .streamlit文件夹和config.toml文件必须位于Streamlit应用所在的目录下。
- 如果你的Streamlit版本较低,可能不支持通过config.toml文件配置端口。请尝试升级Streamlit到最新版本。
总结:
通过修改Streamlit的默认端口,可以有效地解决WinError 10013错误。 按照上述步骤,创建并编辑config.toml文件,选择一个未被占用的端口,然后重启Streamlit应用,即可解决此问题。 记住,选择合适的端口并确保防火墙设置正确是确保Streamlit应用顺利运行的关键。










