Работает в терминале, но не в коде VS - PullRequest
1 голос
/ 20 апреля 2020

У меня проблема, которая сводит меня с ума. У меня есть сценарий 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 голосов
/ 20 апреля 2020

Я понимаю, что вы пытаетесь написать скрипт, используя Python, и что если вы запускаете его с помощью Terminal, он работает, но если вы запускаете его в редакторе VS, он не работает! Если это то, что вы говорите, может быть разница в версии по умолчанию, которая работает на терминале, и между той, которая работает на VS, это может быть та, которая работает на терминале python 3, и та, в редакторе работает python 2. Я предпочитаю попробовать разработку программы spyder для python. Вы можете установить ее с помощью этой команды: sudo apt update && sudo apt install spyder && sudo pip install spyder

и вам нужно добавить эту строку в стартовый скрипт, если вы набираете python 2, добавляете "#! / Bin / python2", если вы набираете python 3, добавляете "#! / Bin / python3" в скажи bash какая версия python тебе нужна для запуска и продолжай изучать, брат

...