在终端中有效,但在VS代码中无效

时间:2020-04-20 15:56:03

标签: python visual-studio-code pynput

我有一个让我发疯的问题。我有一个python脚本,当我在终端(ubuntu)中运行它而不在vscode中运行时,它可以工作。

终端代码是:

python helper.py

和helper.py如下所示:

from pynput.keyboard import Key, Controller
from pynput.keyboard import Listener

def on_press(key):
    print('{0} pressed'.format(
        key))

def on_release(key):
    print('{0} release'.format(
        key))
    if key == Key.esc:
        # Stop listener
        return False

# Collect events until released
with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

当我在终端中运行它时,它可以正常工作,但是在vscode中它会显示

Traceback (most recent call last):
  File "/home/paul/Programming/statFit2/helper.py", line 1, in <module>
    from pynput.keyboard import Key, Controller
  File "/home/paul/anaconda3/lib/python3.7/site-packages/pynput/__init__.py", line 40, in <module>
    from . import keyboard
  File "/home/paul/anaconda3/lib/python3.7/site-packages/pynput/keyboard/__init__.py", line 52, in <module>
    from ._xorg import KeyCode, Key, Controller, Listener
  File "/home/paul/anaconda3/lib/python3.7/site-packages/pynput/keyboard/_xorg.py", line 39, in <module>
    from pynput._util.xorg import (
  File "/home/paul/anaconda3/lib/python3.7/site-packages/pynput/_util/xorg.py", line 40, in <module>
    _check()
  File "/home/paul/anaconda3/lib/python3.7/site-packages/pynput/_util/xorg.py", line 38, in _check
    display = Xlib.display.Display()
  File "/home/paul/anaconda3/lib/python3.7/site-packages/Xlib/display.py", line 89, in __init__
    self.display = _BaseDisplay(display)
  File "/home/paul/anaconda3/lib/python3.7/site-packages/Xlib/display.py", line 71, in __init__
    protocol_display.Display.__init__(self, *args, **keys)
  File "/home/paul/anaconda3/lib/python3.7/site-packages/Xlib/protocol/display.py", line 84, in __init__
    name, protocol, host, displayno, screenno = connect.get_display(display)
  File "/home/paul/anaconda3/lib/python3.7/site-packages/Xlib/support/connect.py", line 73, in get_display
    return mod.get_display(display)
  File "/home/paul/anaconda3/lib/python3.7/site-packages/Xlib/support/unix_connect.py", line 76, in get_display
    raise error.DisplayNameError(display)
Xlib.error.DisplayNameError: Bad display name ""

这只是对我而言毫无意义的事情之一,而这真的让我退出编程。

非常感谢 保罗

1 个答案:

答案 0 :(得分:0)

我了解您正在尝试使用Python编写脚本,并且如果您使用Terminal运行它可以运行,但是如果您在VS Editor中运行它则无法运行!如果您是这样说的,那么在终端机上运行的默认版本可能会有所不同,而在VS上运行的默认版本之间可能是在终端python 3上运行的默认版本之间,以及在python 3上运行的默认版本之间有所不同。在编辑器中是python 2。 我更喜欢您尝试使用python的spyder程序进行开发 您可以使用以下命令进行安装: sudo apt更新&& sudo apt安装spyder && sudo pip安装spyder

,您需要在开始脚本中添加此行 如果您输入python 2,请添加“#!/ bin / python2” 如果您输入python 3,请添加“#!/ bin / python3” 要告诉bash什么是python版本,您需要运行 并让您继续学习兄弟

相关问题