python - 尝试访问从 Windows 复制的数据时,运行 Ubuntu 18 LTS 的 WSL2 上出现 Pyperclip 错误

标签 python ubuntu windows-subsystem-for-linux pyperclip windows-terminal

我在 Windows 10 build 20190 上通过 Windows Terminal Preview (1.2.2234.0) 在 WSL2 中运行的 Ubuntu 18.04 上使用 IPython 7.16.1 (Python 3.7.7)(尽管问题不限于 IPython,它与外壳本身有关) .我正在尝试使用 pandas.read_clipboard() 在从 Windows 复制的数据上,即在 WSL 之外。但是,收到以下错误:

PyperclipException:
    Pyperclip could not find a copy/paste mechanism for your system.
    For more information, please visit
    https://pyperclip.readthedocs.io/en/latest/introduction.html#not-implemented-error
我确实理解这是由于 WSL 不支持显示,但是,由于我可以将粘贴数据复制到 WSL 和 Windows,因此应该有一种机制可以访问 Windows 剪贴板。有针对这个的解决方法吗?
我看过 xclip , xsel , QTpy根据建议 here , 和 here ,没有帮助。
完整的堆栈跟踪:
In [1]: import pandas as pd
In [2]: df = pd.read_clipboard()
---------------------------------------------------------------------------
PyperclipException                        Traceback (most recent call last)
<ipython-input-2-861af318b71b> in <module>
----> 1 df = pd.read_clipboard()

~/anaconda3/envs/tensorflow_gpu/lib/python3.7/site-packages/pandas/io/clipboards.py in read_clipboard(sep, **kwargs)
     36     from pandas.io.parsers import read_csv
     37
---> 38     text = clipboard_get()
     39
     40     # Try to decode (if needed, as "text" might already be a string here).

~/anaconda3/envs/tensorflow_gpu/lib/python3.7/site-packages/pandas/io/clipboard/__init__.py in lazy_load_stub_paste()
    648     global copy, paste
    649     copy, paste = determine_clipboard()
--> 650     return paste()
    651
    652

~/anaconda3/envs/tensorflow_gpu/lib/python3.7/site-packages/pandas/io/clipboard/__init__.py in __call__(self, *args, **kwargs)
    285     class ClipboardUnavailable:
    286         def __call__(self, *args, **kwargs):
--> 287             raise PyperclipException(EXCEPT_MSG)
    288
    289         def __bool__(self) -> bool:

PyperclipException:
    Pyperclip could not find a copy/paste mechanism for your system.
    For more information, please visit
    https://pyperclip.readthedocs.io/en/latest/introduction.html#not-implemented-error

最佳答案

我注意到这个问题与以下代码块有关:pandas/io/clipboard/init.py#L523-L526
如果我编辑 if "Microsoft" in f.read(): 行,并将“Microsoft”替换为“microsoft”(小写“m”),然后剪贴板功能对我有用。
这不是一个好的长期解决方案,但绝对是一个简单的补丁,直到 pandas 团队整合它。

关于python - 尝试访问从 Windows 复制的数据时,运行 Ubuntu 18 LTS 的 WSL2 上出现 Pyperclip 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63539268/

相关文章:

linux - windows子系统Linux在终端中找不到文件

python - Ansible 不再有效

python - 为什么 max 在 python 中是一个空序列

python - pyttsx pyttsx.init() 不工作

linux - 根据文件名上的 grep 获取到最新文件的自动更新符号链接(symbolic link)

java - 启动 Scala 解释器时的 "Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar"

linux - 移动文件到不同的目录

virtualization - WSL2 技术堆栈中讨论的 "lightweight vm"是什么意思?

java - 有没有很好的API来获取有关当前事件的信息?

python - 为什么 H2oFrame 忽略我的输入列类型?