【发布时间】:2020-08-03 04:58:56
【问题描述】:
我有一个让我发疯的问题。我有一个 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 ""
这只是其中一件对我来说真的没有意义并且真的想让我放弃编程的事情。
【问题讨论】:
-
VS Code 的默认解释器与您终端的默认 Python 解释器是否不同?
-
我怎么能看到这个?我认为这是同一个蟒蛇版本
-
在 VS 代码中,点击
ctrl + shift + p并输入python: select interpreter看看哪个是默认值。对于 Ubuntu,输入which python。这些是一样的吗? -
谢谢。是的,他们是一样的。在终端中它的
/home/paul/anaconda3/bin/python和在 vscode 中的当前是 ~/anaconda3/bin/python -
可能是
$DISPLAY设置不正确。这可以通过在不同的终端中执行echo $DISPLAY来测试它们的设置。这更像是 Xlib 的事情,而不是编程的事情。所以不要太沮丧;)
标签: python visual-studio-code pynput