写在最前面
在开发和测试机器学习模型或数据科学应用时,我们经常使用Gradio这样的工具来创建快速、交互式的原型。Gradio允许我们通过简单的界面与模型进行交互,无需构建复杂的前端应用。
去年的项目,重新部署运行Gradio时,我遇到如下的错误信息:
Running on local URL: http://0.0.0.0:9966
Could not create share link. Please check your internet connection or
our status page: https://status.gradio.app
这个错误通常表明Gradio尝试创建一个共享链接以便你可以将你的应用分享给其他人,但是出于某种原因失败了
参考:
gradio无法生成可分享的外部连接Could not create share link. Missing file:或Could not create share link. Please che
https://blog.csdn.net/unp/article/details/131479915
碎碎念:啊啊心态小爆炸orz,去年咋没做笔记。。找不到咋部署,忘记要挂后台了,好多处理细节又得重新试
没事这次做一下笔记,方便下次
在服务器端一直运行一个Python脚本
先进入到conda环境,然后在找到运行的py文件,比如我的/home/tjh/wyt/CT-summary/page2.py
最后输入命令:
nohup python /home/tjh/wyt/CT-summary/page2.py >out.log 2>&1 &
解决:下载frpc_linux_amd64文件,并添加权限
cd进入frpc_linux_amd64文件的位置(在类似路径.conda/envs/ChatGLM2/lib/python3.11/site-packages/gradio),输入以下命令给予权限:chmod +x frpc_linux_amd64_v0.2
参考:https://blog.csdn.net/bsy1111/article/details/133245312
- 先关闭防火墙,要不然会报错病毒不给下载。然后点击程序提示的第一个链接,下载frpc_linux_amd64文件;
或者在https://github.com/friklogff/frpc_windows_amd64_v0.2/blob/main/frpc_linux_amd64这里下载
- 在本地将文件名字改为:frpc_linux_amd64_v0.2;
- 上传到对应的gradio安装包下面。(关于如何找到gradio安装包位置,可以参考后面附的完整碰壁过程)
总之就是先按照上面的提示先操作一遍。
如果此时还不好用,那么就可能是你上传文件到云服务器之后,会出现的一个文件读写权限的问题:
解决办法:
上传之后终端进入到gradio安装包的文件夹,输入如下命令:
sudo chmod +x frpc_linux_amd64_v0.2
或者
chmod +x frpc_linux_amd64_v0.2
更文件夹一个读写权限,问题解决。
原理
参考:https://blog.csdn.net/qq_42681787/article/details/132303480
弄一个内网穿透。
之后,我又修改了share=True,Gradio返回了一个类似这样的地址,通过这个地址还是访问不到应用,后来查阅资料才发现share=True返回的地址是 Gradio 官网提供的免费公共 URL,可以通过公网访问你本地部署的 Gradio 应用程序。share=True会向 Gradio 服务器注册你的应用程序,并把应用程序的公网 URL 地址返回给你。当你在浏览器中访问该地址时,Gradio 服务器就会通过反向代理的方式将用户的请求转发到你的本地 Gradio 应用程序上。这种实现方式可以使用户在不知道具体本地部署的情况下,通过公共网址轻松地访问 Gradio 应用程序。但是我部署到的团队服务器跟我的电脑是局域网连接起来的,这个服务器外网是访问不到的。
之后我将server_name指定为服务器的地址,应用可以访问。
或者把server_name=“0.0.0.0”也可以解决该问题
完整过程:先找gradio库位置,然后发现缺失文件
先找gradio库位置,然后发现缺失文件
在Linux系统中,可以通过终端(Terminal)使用一系列命令来查找文件或目录并进入到指定路径。下面是一步步如何找到gradio库所在的位置并进入到该目录的方法:
1. 打开终端
首先,您需要打开终端(Terminal)。这可以通过搜索“Terminal”或通过快捷键(通常是Ctrl+Alt+T)来完成。
也可以是直接在xshell输入指令。
2. 使用 find 命令查找 gradio 目录
您可以使用 find 命令来查找整个系统中 gradio 目录的位置。由于您已经知道 .conda/envs/ 目录下大概的路径,可以从这个位置开始查找以缩短搜索时间。输入以下命令:
find ~/ -type d -name gradio
这条命令的解释如下:
- find 是用于查找文件和目录的命令。
- ~/ 表示从您的主目录开始搜索,这样做是为了缩小搜索范围,使搜索更快。如果你确定 .conda 目录在其他位置,可以相应地调整这个路径。
- -type d 表示您只想查找目录(不查找文件)。
- -name gradio 表示您要查找名称为 gradio 的目录。
3. 查看 find 命令的输出
该命令会列出系统中所有名为 gradio 的目录的路径。输出应该包含一个或多个路径,您需要从中找出看起来像是 .conda/envs/ChatGLM2/lib/python3.11/site-packages/gradio 的那个路径。
4. 进入 gradio 目录
一旦找到了正确的 gradio 目录,可以使用 cd 命令来进入该目录。
假设在上一步骤中找到的路径是 /home/用户名/.conda/envs/ChatGLM2/lib/python3.11/site-packages/gradio,就可以输入:
cd /home/用户名/.conda/envs/ChatGLM2/lib/python3.11/site-packages/gradio
将其中的 用户名 替换为您的实际用户名。
5. 验证当前目录
输入 pwd 命令来验证您当前所在的目录,确保您已成功进入到了 gradio 目录中。
pwd
这条命令会输出您当前所在的完整路径,您可以确认是否和预期一致。
通过上述步骤,您就可以通过查看Linux系统下所有文件夹,一步步找到自己的 gradio 目录所在位置,并成功进入到该目录中。
其他解决流程
在开发和测试机器学习模型或数据科学应用时,我们经常使用Gradio这样的工具来创建快速、交互
式的原型。Gradio允许我们通过简单的界面与模型进行交互,无需构建复杂的前端应用。然而,有时候在本地运行Gradio时,你可能会遇到如下的错误信息:
Running on local URL: http://0.0.0.0:9966 Could not create share link. Please check your internet connection or our status page: https://status.gradio.app
这个错误通常表明Gradio尝试创建一个共享链接以便你可以将你的应用分享给其他人,但是出于某种原因失败了。下面是一些解决这个问题的方法:
1. 检查互联网连接
- 首先,确保你的设备连接到互联网。尝试访问其他网站或服务以验证你的连接是否正常。
2. 访问Gradio状态页面
- 然后,访问Gradio状态页面来检查Gradio服务是否有任何已知的故障或维护。如果有服务中断,你可能需要等待直到问题被解决。
3. 使用本地模式
- 如果你只是希望在本地测试Gradio界面,并不需要创建共享链接,你可以在启动Gradio应用时指定不创建共享链接。可以通过添加参数share=False来实现这一点。例如,如果你通常是这样启
- 启动Gradio的:
import gradio as gr def my_model_function(input): # 你的模型逻辑 return output iface = gr.Interface(fn=my_model_function, inputs="text", outputs="text") iface.launch()
你可以修改最后一行为:
iface.launch(share=False)
这将避免尝试创建共享链接,但仍然允许你在本地访问和测试界面。
4. 检查防火墙和网络设置
- 有时,网络设置或防火墙可能阻止Gradio创建共享链接。确保你的网络设置允许出站连接到Gradio的服务器,并且没有任何软件(如防火墙或安全软件)阻止Gradio操作。
5. 更新Gradio到最新版本
- Gradio团队持续改进软件并修复已知问题。通过运行以下命令,确保你安装了最新版本的Gradio:
pip install --upgrade gradio
6. 寻求帮助
- 如果以上方法都没有解决问题,你可以在Gradio的GitHub仓库中查找类似的问题或开启一个新的Issue。提供你遇到的错误信息和你已经尝试的解决方法,这样社区或者Gradio团队成员可以提供帮助。
使用这些步骤,你应该能够解决Gradio无法创建共享链接的问题,继续开发和测试你的应用。如果问题持续存在,不要犹豫寻求社区的帮助。