10

I am running a Data8 instance of JupyterHub running JupyterLab on a server, and pd.read_clipboard() does not seem to work. I see the same problem in google colab.

import pandas as pd
pd.read_clipboard()

errors out like so:

---------------------------------------------------------------------------
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

Is there a way to get this working?

Nathan Lloyd
  • 1,821
  • 4
  • 15
  • 19
  • Pyperclip uses "copy/paste mechanism" specific to your OS to do the actual copying and pasting. As a result, it only works when directly run on a Windows/macOS/Linux system. I'm not sure if there's a workaround for this for JupyterHub. – Al Sweigart Nov 27 '18 at 20:39

1 Answers1

1

No. The machine is run in the cloud. Python from there cannot access your local machine to get clipboard content.

I tried Javascript clipboad api, but it didn't work probably because the output is in an iframe which isn't allow access to clipboard either. If it did, this would have worked

from google.colab.output import eval_js
text = eval_js("navigator.clipboard.readText()")
korakot
  • 37,818
  • 16
  • 123
  • 144