执行streamlit hello时出现Access Denied错误该如何解决?
Streamlit执行
streamlit hello报Access Denied错误的原因与解决方案 触发原因
- 端口权限限制或占用:Streamlit默认使用8501端口启动服务,若该端口被防火墙/安全软件拦截,或被其他进程占用,部分场景会直接返回Access Denied而非端口占用提示
- 配置目录写入权限不足:首次运行Streamlit时会自动在用户根目录创建
.streamlit隐藏文件夹存储配置,若当前用户对根目录无写入权限,会触发权限错误 - 安全策略拦截:企业环境的终端安全策略通常会拦截未知程序的端口监听行为,会直接返回访问拒绝提示
- Python解释器权限异常:若Python安装在系统级目录(如Windows的C:\Program Files路径下),即使终端以管理员身份启动,Python进程的端口调用权限仍可能被系统UAC拦截
解决方案
- 指定自定义高位端口启动
手动指定未被占用的高位端口,规避默认端口的权限限制,执行命令:streamlit hello --server.port 18501
如果更换端口后可正常启动,说明问题出在默认8501端口的占用或权限限制上 - 手动创建Streamlit配置目录
先在用户根目录手动创建.streamlit文件夹:- Windows路径:
C:\Users\你的用户名\.streamlit - macOS/Linux路径:
~/.streamlit
创建完成后重新执行启动命令即可
- Windows路径:
- 排查安全软件拦截
临时关闭系统防火墙、退出终端安全软件后再次启动,如果能正常运行,将对应Python解释器和Streamlit加入安全软件白名单、防火墙放行规则即可 - 调整Python解释器权限(Windows适用)
找到当前使用的python.exe文件,右键选择「属性」-「安全」,给当前用户添加「完全控制」权限后重新执行命令 - 排查端口占用
执行对应命令查看8501端口是否被其他进程占用:- Windows下执行:
netstat -ano | findstr "8501" - macOS/Linux下执行:
lsof -i:8501
若查询到占用进程,结束该进程后重新启动,或直接更换自定义端口启动
- Windows下执行:
内容的提问来源于stack exchange,提问作者Youssef Razak
相关产品推荐
相关产品推荐

