来自云托管的 jupyter 的 pandas.read_clipboard?

Posted

技术标签:

【中文标题】来自云托管的 jupyter 的 pandas.read_clipboard?【英文标题】:pandas.read_clipboard from cloud-hosted jupyter? 【发布时间】:2019-04-13 12:57:36 【问题描述】:

我在服务器上运行 JupyterHub 的 Data8 实例,而 pd.read_clipboard() 似乎不起作用。我在 google colab 中看到了同样的问题。

import pandas as pd
pd.read_clipboard()

错误如下:

---------------------------------------------------------------------------
PyperclipException                        Traceback (most recent call last)
<ipython-input-2-8cbad928c47b> in <module>()
----> 1 pd.read_clipboard()

/opt/conda/lib/python3.6/site-packages/pandas/io/clipboards.py in read_clipboard(sep, **kwargs)
     29     from pandas.io.clipboard import clipboard_get
     30     from pandas.io.parsers import read_table
---> 31     text = clipboard_get()
     32 
     33     # try to decode (if needed on PY3)

/opt/conda/lib/python3.6/site-packages/pandas/io/clipboard/clipboards.py in __call__(self, *args, **kwargs)
    125 
    126         def __call__(self, *args, **kwargs):
--> 127             raise PyperclipException(EXCEPT_MSG)
    128 
    129         if PY2:

PyperclipException: 
    Pyperclip could not find a copy/paste mechanism for your system.
    For more information, please visit https://pyperclip.readthedocs.org

有没有办法让它工作?

【问题讨论】:

Pyperclip 使用特定于您的操作系统的“复制/粘贴机制”来进行实际的复制和粘贴。因此,它仅在直接在 Windows/macOS/Linux 系统上运行时才有效。我不确定 JupyterHub 是否有解决方法。 【参考方案1】:

没有。机器在云端运行。那里的 Python 无法访问您的本地计算机以获取剪贴板内容。

我尝试了 javascript 剪贴板 api,但它不起作用,可能是因为输出位于 iframe 中,也不允许访问剪贴板。如果是这样,那就行了

from google.colab.output import eval_js
text = eval_js("navigator.clipboard.readText()")

【讨论】:

以上是关于来自云托管的 jupyter 的 pandas.read_clipboard?的主要内容,如果未能解决你的问题,请参考以下文章

从外部托管的Jupyter笔记本导出数据

在 GCE 托管的 google colab Jupyter notebook 上安装 R 包

阿里云服务器安装配置jupyter

云原生全景图之六 | 托管 Kubernetes 和 PaaS 解决什么问题

conda安装jupyter

IDP:云原生的“Jupyter”,让算法团队更高产