Ubuntu运行Jupyter Notebook打开本地html文件提示权限被拒绝如何解决
问题原因
Firefox浏览器的默认安全策略限制了对~/.local这类隐藏目录下本地文件的访问权限,即使系统层面的文件权限配置正确,浏览器也会拦截访问请求,所以才会报文件访问被拒绝的错误。
解决方法
方法1:调整Firefox安全策略(不推荐长期使用)
- 在Firefox地址栏输入
about:config,进入高级配置页,接受风险提示 - 搜索配置项
security.fileuri.strict_origin_policy,双击将值修改为false - 搜索配置项
privacy.file_unique_origin,双击将值修改为false - 重启Firefox后即可正常打开本地跳转html文件
方法2:修改Jupyter配置(推荐,适配脚本需求)
这个方法可以直接禁用Jupyter的本地跳转文件逻辑,启动后直接打开HTTP链接,完全避开本地文件访问的问题:
- 终端执行命令生成Jupyter配置文件(如果之前已经生成过可以跳过这一步):
jupyter notebook --generate-config
- 打开生成的配置文件
~/.jupyter/jupyter_notebook_config.py,找到如下配置项,取消注释并修改值:
# 禁用本地跳转文件,直接打开HTTP链接 c.NotebookApp.use_redirect_file = False # 可选:固定端口,不用每次启动随机占用端口 c.NotebookApp.port = 8888 # 可选:固定访问token,脚本启动时不需要每次抓取token c.NotebookApp.token = "你自定义的访问密码"
- 保存配置后重新启动Jupyter,就不会再出现本地文件访问报错的问题。
方法3:脚本直接抓取HTTP链接打开(无需修改任何配置)
如果不想改浏览器和Jupyter配置,写bash脚本的时候可以直接抓取启动日志中的HTTP访问链接,用系统默认浏览器打开,完全不需要调用本地html文件,脚本示例如下:
#!/bin/bash # 替换为你自己的虚拟环境激活路径,如果不用虚拟环境可以删掉这行 source /home/hd2900/env/bin/activate # 后台启动Jupyter,将日志写入临时文件 jupyter notebook > /tmp/jupyter_runtime.log 2>&1 & # 等待服务启动完成 sleep 2 # 提取日志中的访问链接 ACCESS_URL=$(grep -E 'http://(localhost|127\.0\.0\.1):8888/\?token=[0-9a-f]+' /tmp/jupyter_runtime.log | head -n 1 | awk '{print $1}') # 调用默认浏览器打开链接 xdg-open "$ACCESS_URL"
给脚本添加执行权限后即可直接运行:
chmod +x start_jupyter.sh ./start_jupyter.sh
内容的提问来源于stack exchange,提问作者jxw
相关产品推荐
相关产品推荐

