【问题标题】:Unable to initialize Pygame display, but only when running through tox无法初始化Pygame显示,但只有在通过tox运行时
【发布时间】:2021-02-15 18:04:27
【问题描述】:

我有以下最小的测试程序。

import pygame
pygame.init()
print(pygame.display.list_modes())

如果我尝试通过 Tox 命令运行此程序,则会收到错误消息:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    print(pygame.display.list_modes())
pygame.error: video system not initialized

但是,如果我激活 tox 命令运行的虚拟环境并手动运行相同的程序,它会按预期工作。我希望两个执行环境是相同的。我做错了什么?

【问题讨论】:

  • 能否提供完整的应用程序代码和测试?甚至可能是一个公共的 GitHub 存储库?我有一个想法,我想先在我的系统上尝试一下
  • virtualenv 和 tox 之间的一个区别是 tox 提供所谓的隔离构建。它也不使用例如全局环境变量,除非您将它们列入白名单。
  • @J.G.你只需要复制上面的三行程序(另存为test.py)和this tox.ini file。将这两个放在一个空目录中,然后尝试运行tox -e appsource .tox/py38/bin/activate,然后运行python3 test.py
  • 对,还有一个 setup.py,这样 tox 就可以构建项目了。就是这样做的。我可以重现错误。
  • 我在 tox.ini 中设置了 skipsdist 标志,至少现在是这样,所以我不需要 setup.py。

标签: python pygame python-3.8 tox


【解决方案1】:

为了解决问题,我需要添加一个

passenv = DISPLAY

致我的[testenv]

正如上面评论中提到的,tox 执行 isolated 构建,并且不传入 ENVIRONMENT 变量,除非您将它们列入白名单。

我对@9​​87654326@不是很熟悉,我只是快速浏览了一下源代码。

这适用于我的带有 Ubuntu 的机器 - 可能你的设置有所不同。

【讨论】:

  • 很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多