jupyter-notebook - 在 Jupyter 中,你如何判断你在哪个浏览器中?
问题描述
在我的 Jupyter 笔记本中,我需要知道我是在 Chrome 还是 Firefox 中运行,因为在 Altair 中保存图形的代码因浏览器而异(https://altair-viz.github.io/user_guide/saving_charts.html)。
我怎样才能做到这一点?
解决方案
Jupyter 内核(即 Python 后端)没有关于连接到它的前端的直接信息。但是您可以使用系统工具来尝试推断正在运行的浏览器进程。例如,psutil模块允许您列出正在运行的进程。我目前打开了 Chrome 和 Safari 浏览器,我得到了以下结果:
>>> import psutil
>>> 'Google Chrome' in (p.name() for p in psutil.process_iter())
True
>>> 'Firefox' in (p.name() for p in psutil.process_iter())
False
>>> 'Safari' in (p.name() for p in psutil.process_iter())
True
一些警告:
- 进程名称可能因操作系统而异:如果跨平台一致地工作很重要,我会检查一下。
- 这并不能告诉您用户是否正在使用这个特定的前端来查看 Jupyter 笔记本,而是告诉您该名称的进程是否正在运行。
- 要保存 altair 图表,请注意仅浏览器是不够的:您还需要用户为 Chrome 安装 chromedriver,或为 Firefox 安装 geckodriver。检测是否安装了这些驱动程序可能比检测当前运行的浏览器更好。有关详细信息,请参阅保存图表。
推荐阅读
- amazon-web-services - AWS Cognito - get user's sub in Lambda Trigger function
- java - 由InvokedynamicClassLoader引起的war文件中的NoClassDefFoundError运行方法?
- dashboard - 自定义搜索 API 仪表板
- python - 检查与 pd.idxmin() 对应的值并使用某些条件进行过滤
- html - Angular 6 视图框?(类似于 WPF/Silverlight)
- laravel - 在 Laravel 中验证电话号码
- javascript - 始终将所选数据保留在新数组中(React Native)
- postgresql - Postgresql autovacuum 以防止环绕卡在损坏的表上
- angular - 带有工厂的 Angular 6 库根提供程序
- javascript - 样式滚动条仅适用于 div,不适用于整个身体