簡體   English   中英

適用於終端,但不適用於 VS 代碼

[英]Works in terminal but not in VS code

我有一個讓我發瘋的問題。 我有一個 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 ""

它只是那些對我來說真的沒有意義並且真的想讓我放棄編程的事情之一。

我了解您正在嘗試使用 Python 編寫腳本,並且如果您使用終端運行它,它可以工作,但如果您在 VS 編輯器中運行它,它就不起作用,如果這是您所說的,可能會有所不同在終端上運行的默認版本,在 VS 上運行的版本之間,可能是在終端上運行的版本 python 3. 在編輯器中運行的版本是 python 2:我更喜歡你試試在 python 的 spyder 程序上開發您可以使用以下命令安裝它: sudo apt update && sudo apt install spyder && sudo pip install spyder

and you need add this line in start script if you typing python 2 add "#!/bin/python2" if you typing python 3 add "#!/bin/python3" To tell bash what is version of python you need to run and讓你學習兄弟

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM