首页 > 解决方案 > 在heroku上部署我的应用程序时出现webbrowser模块错误

问题描述

我试图在 Heroku 上部署我的 Web 应用程序,并且我正在使用该webbrowser模块在单击按钮时打开一个链接,但部署失败并出现以下错误:

ERROR: Could not find a version that satisfies the requirement webbrowser (from -r/tmp/build_1a0f381f625ed056f039e4b30415d590/requirements.txt (line 7)) 
(from versions: none)
   ERROR: No matching distribution found for webbrowser (from -r /tmp/build_1a0f381f625ed056f039e4b30415d590/requirements.txt (line 7))
 !     Push rejected, failed to compile Python app.
 !     Push failed

这是requirements.txt文件:

joblib>=0.14.0
numpy>=1.9.2
matplotlib>=1.4.3
pandas>=0.19
streamlit
scikit-learn==0.22.1
webbrowser

这是我的使用方式webbrowser

import webbrowser

webbrowser.open('URL')

webbrowser当我在文件中未提及的情况下部署应用程序时requirements.txt,应用程序已成功部署,但单击按钮时打开 URL 的功能不起作用。

标签: pythonherokuweb-applicationsstreamlit

解决方案


webbrowser模块是 Python 标准库的一部分。您不需要(也不能)通过 安装它pip,因此它不属于您的requirements.txt. 把它拿回来。

现在您的部署正在运行,我们需要解决真正的问题:您无法webbrowser在 Heroku 上打开浏览器。Python 代码在服务器上运行,而不是在客户端上。如果这样做,它将在 AWS 数据中心某处的机器上打开浏览器,而不是在客户端机器上。

我不确定您是如何将按钮连接到后端的,但JavaScript 可以 在客户端打开窗口

这样做要小心,因为弹出窗口的声誉很差,而且用户通常不喜欢它们。此外,现在许多浏览器都对此进行了保护;您的用户可能必须批准弹出窗口。我强烈建议寻找另一个不涉及创建新浏览器窗口的解决方案。


推荐阅读