ret*_*nob 6 pyglet visual-studio-code
如果我在 VSCode 终端中运行此代码
import pyglet
window = pyglet.window.Window(500, 500)
Run Code Online (Sandbox Code Playgroud)
我明白了
Traceback (most recent call last):
File "/home/justin/.local/lib/python3.8/site-packages/pyglet/__init__.py", line 334, in __getattr__
return getattr(self._module, name)
AttributeError: 'NoneType' object has no attribute 'Window'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/justin/Dropbox/jr/py/pyglet_games/pyglet_demo/displaytest.py", line 5, in <module>
window = pyglet.window.Window(500, 500)
File "/home/justin/.local/lib/python3.8/site-packages/pyglet/__init__.py", line 340, in __getattr__
__import__(import_name)
File "/home/justin/.local/lib/python3.8/site-packages/pyglet/window/__init__.py", line 1891, in <module>
gl._create_shadow_window()
File "/home/justin/.local/lib/python3.8/site-packages/pyglet/gl/__init__.py", line 220, in _create_shadow_window
_shadow_window = Window(width=1, height=1, visible=False)
File "/home/justin/.local/lib/python3.8/site-packages/pyglet/window/xlib/__init__.py", line 171, in __init__
super(XlibWindow, self).__init__(*args, **kwargs)
File "/home/justin/.local/lib/python3.8/site-packages/pyglet/window/__init__.py", line 573, in __init__
display = pyglet.canvas.get_display()
File "/home/justin/.local/lib/python3.8/site-packages/pyglet/canvas/__init__.py", line 94, in get_display
return Display()
File "/home/justin/.local/lib/python3.8/site-packages/pyglet/canvas/xlib.py", line 123, in __init__
raise NoSuchDisplayException('Cannot connect to "%s"' % name)
pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None"
Run Code Online (Sandbox Code Playgroud)
但是,如果我在命令行中运行它,则会按预期出现一个窗口。如果我在我用来教学的 Thonny 中运行它,它也会按预期工作。我已经验证在终端或 VSCode 中运行时 sys.version 和 sys.path 是相同的。
我已经寻找了这个问题的解决方案,但在存在的少数其他情况下,它在以一种方式运行而不是以另一种方式运行时不起作用。大多数解决方案涉及更改显卡设置或运行 X11 服务器。这似乎与这里无关,因为它似乎只与 VSCode 相关。
谢谢。
小智 2
我也遇到了同样的问题,不仅是pyglet
与任何试图打开窗户的东西有关。
看起来是 VS Code 内部终端的问题。设置console
为替代方案launch.json
为我解决了这个问题。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "externalTerminal"
}
]
}
Run Code Online (Sandbox Code Playgroud)
事实上,将以下内容添加到我的 python 脚本中可以解决问题(至少与切换到 Wayland 结合使用):
import os
os.environ['DISPLAY'] = ':1'
Run Code Online (Sandbox Code Playgroud)
有谁知道如何将其设为永久设置,以便我编写的每个需要输出到显示器的模块中不需要它?
归档时间: |
|
查看次数: |
10553 次 |
最近记录: |