python - 在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 的功能不起作用。
解决方案
该webbrowser
模块是 Python 标准库的一部分。您不需要(也不能)通过 安装它pip
,因此它不属于您的requirements.txt
. 把它拿回来。
现在您的部署正在运行,我们需要解决真正的问题:您无法webbrowser
在 Heroku 上打开浏览器。Python 代码在服务器上运行,而不是在客户端上。如果这样做,它将在 AWS 数据中心某处的机器上打开浏览器,而不是在客户端机器上。
我不确定您是如何将按钮连接到后端的,但JavaScript 可以 在客户端打开窗口。
这样做要小心,因为弹出窗口的声誉很差,而且用户通常不喜欢它们。此外,现在许多浏览器都对此进行了保护;您的用户可能必须批准弹出窗口。我强烈建议寻找另一个不涉及创建新浏览器窗口的解决方案。
推荐阅读
- css - CSS:仅当您将鼠标悬停在元素上时才显示元素
- iptables - 您如何更新(在 netfilter 挂钩中)非线性 skbuff 中的 UDP 标头
- database - 我有一个由 5 件组成的管道,每件包括 5 个属性
- gcc - 如何让使用 SysV 调用约定编译的 C 程序在 MinGW 下运行
- mysql - 使用python将数据插入oracle sql时出现cx_Oracle.DatabaseError
- java - Android TV:如何重定向到 Android TV 上的通知访问设置
- mysql - mysql 8.0.21版本如何获取表的最后更新时间
- r - 基于列扩展数据框
- javascript - 我的浏览器和我的朋友浏览器中的正则表达式不一致
- security - 有没有办法将(三个字母的单词)转换为矩阵以将其用作希尔密码中的密钥?