python-3.x - 从在 Google Cloud Shell 中运行的 Python 打开浏览器
问题描述
我正在 Python 3.6 上开发一个小脚本,我很可能会从 Google Cloud Shell 使用它。在所述脚本中,我想做一些 API 调用,然后用 URL 打开 Web 浏览器,这些调用的结果。以下代码适用于我测试过的其他环境,但不适用于 Cloud Shell:
import webbrowser as wb
# different calls and process here, not relevant to the issue
wb.open('URL_HERE')
#This just echoes the URL.
有没有办法让 Python '告诉' Cloud Shell 从它运行的地方使用浏览器?即:如果我使用 Chrome 打开 Cloud Shell,有什么方法可以在 Chrome 中打开链接?它是否与网络浏览器或其他库无关。
解决方案
Cloud Shell 只是一个“窗口”,显示来自远程和临时 Compute Engine 虚拟机实例的命令行。这意味着当您运行脚本时,您实际上是在远程 VM 中运行它(而不是在 Chrome 中),并且该特定 VM 本身没有浏览器。
例如,当您尝试在 Cloud Shell 中运行应用程序时(在这里您可以找到使用“mvn appengine:run”的快速示例),一旦应用程序运行,您将在 Cloud Shell 中看到一条消息,如下所示:
[INFO] GCLOUD:INFO:模块实例默认运行在http://localhost:8080/
如果您单击http://localhost:8080/,您实际上将被重定向到为 Cloud Shell VM 实例分配的临时地址(类似于 8080-dot-VM-ID-devshell.appspot.com)。
总之,您无法使用远程 VM 命令行中显示的特定 URL 命令 Cloud Shell 打开浏览器。此外,您应该考虑到存在传出连接限制 ,并且 Cloud Shell 仅供交互使用。
推荐阅读
- javascript - jQuery定义函数没有选择
- kubernetes - 初始化容器可以是 kubernetes 作业吗
- json - 如何在 C++ Builder 中使用 TJSONObject 类获取 JSON 值?
- javascript - Html5 javascript gettime() 来自,奇怪的工作
- javascript - Onload点击图片与jQuery
- angular7 - 如何在 Angular 7 中使用 RESTAPI 在模板中绑定 JSON
- php - 如何根据另一个数组删除我的数组中的重复项
- c# - 有没有办法在 2 个不同的 gridview 中汇总 2 列
- python - 如何使用 drf-yasg 自动生成的招摇页面配置“HTTPS”方案?
- asp.net - dotnet core api 模型绑定不起作用 [frombody]