问题让 pygame 在 Macos 上显示除空白屏幕外的任何内容

Posted

技术标签:

【中文标题】问题让 pygame 在 Macos 上显示除空白屏幕外的任何内容【英文标题】:Problems getting pygame to show anything but a blank screen on Macos 【发布时间】:2019-03-14 02:35:05 【问题描述】:

我最近买了一台新的 macbook,我一直在无休止地尝试让 pygame 工作,但还没有成功。我变得非常绝望,我真的可以使用一些帮助。

我已经安装了pygame 1.9.4,尽管在运行pygame 代码时我没有收到任何错误消息,但它只会显示一个空白屏幕。我正在使用以下代码对其进行测试:

import pygame
pygame.init()

screen = pygame.display.set_mode((800,600))

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            quit()

    screen.fill((255,0,0))
    pygame.display.update()

pygame.quit()

在我的旧 Macbook 上,测试代码如预期的那样给了我一个红屏。两台 Macbook 都在运行 python 2.7.10

有人知道我做错了什么吗?我想我安装了pygame,就像我在旧 Macbook 上安装的一样,唯一的区别似乎是操作系统。

编辑 1: 我在 Sublime Text 中编写脚本并在终端中运行程序。 Screenshot

编辑 2: 通过将我的操作系统降级到 macOS High Sierra,我让 pygame 再次运行。

【问题讨论】:

你能从控制台窗口执行它吗?还添加一个你真​​正得到的截图以及你如何调用这个程序会很有帮助。还要检查这个guide how to ask good questions。 可能是较新的 MacBook 显示屏无法在 800x600 下工作;尝试另一个解决方案。 (@Jan:我很好奇空白屏幕的屏幕截图有什么帮助。但我想值得一试。) @usr2564301 我不确定是否有任何加载。但如果你是,那么我们已经解决了;) 好吧,它显示一个红色的屏幕。你期待别的东西吗? (在 macbook air 上测试 - 10.11.6) 我在 Sublime Text 中编写脚本并在终端中运行程序。截图:i.stack.imgur.com/0QVv6.png。我已将窗口大小更改为 1000x1000,但不幸的是这没有任何区别。 【参考方案1】:

macOS 10.15 CatalinaPython 3.7.5PyGame 2.0.0(在撰写本文时为预发布版)和PyGame 1.9.6(在撰写本文时为稳定版)测试并运行。

最初,您需要决定是想要稳定版还是预发布版(不稳定)。如果您决定使用最新的(可能是预发布/不稳定的),那么只需忽略第一步(“1。查找最新的稳定发布版本”)并在第二步的第 4 步使用master 分支(“2 . 从源代码安装 PyGame")。

1。查找最新的稳定版本

转到 PyGame 的 GitHub 页面here:

正如您在撰写本文时所看到的,最新的稳定版本是 1.9.6,因此我们保留此标签名称以备后用。

2。从源代码在 macOS 上安装 PyGame

    安装一些依赖项brew install sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf。这需要homebrew。 转到site-packages: 对于虚拟环境,请转到cd ~/.virtualenvs/myvirtualenv/lib/python3.X/site-packages,其中~/.virtualenvs/myvirtualenv 是您的虚拟环境的路径,python3.X 是您的Python 版本。 对于系统范围安装,请转到/usr/local/lib/python3.X/site-packages,其中python3.X 是您的Python 版本。 删除任何以前的pygame,pip uninstall pygame(如果pygame 目录存在于site-packages 中,则删除它:rm -rf pygame*) 从 GitHub 克隆 PyGame: git clone https://github.com/pygame/pygame.git 获取最新(可能不稳定版本)。 git clone -b 1.9.6 https://github.com/pygame/pygame.git --single-branch 最新(1.9.6 是最新稳定版本的标签名称,在撰写本文时,请参阅“查找上面的最新稳定版本”) 进入新克隆的pygame目录:cd pygame。 运行python setup.py --config --auto --sdl2。 如果您在使用此命令时遇到问题,下面的一些用户提到单个连字符对他们有用,因此请尝试:python setup.py -config -auto -sdl2。 如果您遇到有关 Python2/3 的任何问题并且您的目标是 Python3,请尝试将 python setup.py --config --auto --sdl2 更改为 python3 setup.py --config --auto --sdl2。 运行python setup.py install(需要一段时间)。 如果您遇到有关 Python2/3 的任何问题并且您的目标是 Python3,请尝试将 python setup.py --config --auto --sdl2 更改为 python3 setup.py --config --auto --sdl2

现在 PyGame 在 macOS 上应该可以正常工作了。

【讨论】:

非常感谢!这让我发疯......但正如你所描述的那样工作。 (Catalina, Python 3.7.5 (pyenv), pygame 2.0.0) 运行 python setup.py -config -auto -sdl2 时出现错误 sh: pkg-config: command not found,然后是 WARNING: "pkg-config freetype2" failed!。我用homebrew安装了pkg-config,但后来遇到了WARNING, No "Setup" File Exists 在我的 osx (10.15.2) 上,我应该使用: python setup.py -config -auto -sdl2 。有关详细信息,请。参考:pygame.org/wiki/MacCompile 我不得不使用单个连字符,例如 @LiangLyon,但非常感谢 Rafael 的修复。 在运行 python3 setup.py -config -auto -sdl2 时出现错误 WARNING, No "Setup" File Exists, Running "buildconfig/config.py" Using Darwin configuration... /bin/sh: pkg-config: command not found /bin/sh: pkg-config: command not found /bin/sh: pkg-config: command not found【参考方案2】:

我在 macOS Catalina 上也遇到了这个问题。其实是pygame的版本问题。首先我安装了以下命令:

pip3 install pygame

只显示一个空白屏幕。但后来,我使用以下命令更改了版本:

pip3 install pygame==2.0.0.dev4

有了这个版本,我的问题就解决了。它运行良好。

【讨论】:

【参考方案3】:

最新更新适用于 MacOS 10.14.1

如果你从官方python.org页面下载Python 3.7.2的官方macOS x64安装包并输入pip3 install pygame,就可以了。

MacOS 存在问题。应该可以在 SDL 中修复。

https://discourse.libsdl.org/t/macos-10-14-mojave-issues/25060/8 https://bugzilla.libsdl.org/show_bug.cgi?id=4274

pygame 问题在这里:https://github.com/pygame/pygame/issues/555

自制问题在这里:https://github.com/Homebrew/homebrew-core/issues/33016

【讨论】:

感谢您的指导。这对我有帮助。 为了清楚起见:从官方网站下载最新的 Python 版本就可以了。 Homebrew 的 Python 3 似乎还没有解决这个问题。 尝试使用 Python 3.7.3 从他们的official website 与 Mojave (MacOS 10.14.3) 和 pygame 1.9.4 的第三次迭代,这里没有乐趣:/ 我试过 3.7.2之前在 macOS 10.14.1 上没有任何更好的结果。有其他人能够让它工作吗?【参考方案4】:

我在使用 macOS Catalina 版本 10.15.2、Python 3.7.2 和 pygame 1.9.6 时遇到了这个问题。我升级到 Python 3.8.1、Pygame 2.0.0.dev6,它现在可以正常工作了。

【讨论】:

谢谢——我也在 Catalina 10.15.2 上,不想降级我的 Python。由于我只是学习 PyGame,所以我对版本不太讲究(假设它至少中等稳定)。 我已经使用 Pygame 2.0.0.dev6 几个月了,而且 - 即使很难,还没有正式发布 - 它对我来说表现非常稳定。 在我的情况下,是的,升级到 Pygame 2 消除了黑屏问题......除了 Pygame 1 和 Pygame2 之间似乎存在关键事件处理差异。我的代码不再有效!【参考方案5】:

我尝试将我的旧 macbook 升级到 OS Mojave 以查看 pygame 是否会停止工作,并且确实如此!

我猜 Mojave 与 pygame 不兼容(目前)。

感谢您的帮助!

【讨论】:

@BeatBreaker82 的回答为我修复了 Mojave【参考方案6】:

使用可行的解决方法进行编辑: 见文章底部


我在带有python3.7 和 MacOs Mojave 的 MacBook Pro(Retina 显示屏)上遇到了同样的问题。 为简单起见,我使用与您完全相同的代码和pygame 1.9.4 进行了所有测试。

在(两台)Windows 计算机上,该程序运行并显示一个红色窗口:

python2.7 python3.6 python3.7

因此这似乎不是 Python 版本问题,我倾向于 MacOS Mojave 问题。

Mojave 引入了“深色模式”,可自动为窗口着色。禁用暗模式时,我得到一个空白屏幕。启用后,我得到一个黑屏。可能是 MacOS 控制了屏幕显示并摆弄了pygame 控制屏幕的方式?这只是一个理论,但我不知道如何测试它。


编辑: 我尝试了一个 pygame 程序,它记录并打印您单击的屏幕的位置。它确实在控制台中输出位置,可惜它不显示任何内容。 除了显示故障之外,pygame 似乎工作正常。


编辑: 目前,使用来自miniconda 的 Python 版本和使用CogSci's pygame 似乎可行。

【讨论】:

【参考方案7】:

我已经尝试了所有方法,但除此之外没有任何效果:

pip install git+https://github.com/pygame/pygame.git

这会安装pygame的提示。它对我有用。试试看吧。

【讨论】:

它对我有用!谢谢!我有以下内容:pygame 2.0.0.dev7 (SDL 2.0.12, python 3.7.7)【参考方案8】:

我在以下环境中遇到了这个问题:Python 3.7、Mojave 10.14.2、Pygame 1.9.4

我发现降级到 Python 3.6 可以解决问题

$ brew unlink python
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

这应该可以解决它,如果您遇到循环依赖问题,您应该运行:

$ brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

详情https://apple.stackexchange.com/questions/329187/homebrew-rollback-from-python-3-7-to-python-3-6-5-x

【讨论】:

如果你想继续使用它,你会如何为 2.7 解决这个问题?这仅适用于 3.6 .... :(【参考方案9】:

我遇到了同样的问题,通过将 python 降级到 3.6.5 使其工作。

> brew unlink python  brew install --ignore-dependencies
> https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
> brew switch python 3.6.5_1 pip3 install pygame

如果你已经安装了 python 3.6.5,我想你可以使用 switch。

【讨论】:

【参考方案10】:

某些 Mac 需要更新。如果您转到系统偏好设置并转到软件更新,您可以尝试更新以查看它是否需要任何更新。当您更新时,您可以检查您的代码现在是否可以工作,因为您的代码看起来是正确的。

【讨论】:

以上是关于问题让 pygame 在 Macos 上显示除空白屏幕外的任何内容的主要内容,如果未能解决你的问题,请参考以下文章

MacOS下搭建Pygame环境

我的 React 应用程序在 iPhone 上的某个阶段显示一个空白页面。在其他任何地方(甚至是 MacOS 上的 Safari),它都能按预期工作

pygame窗口中的空白(黑色)屏幕

如何在屏幕上显示 PIL 图像?

pygame - 如何用字体和颜色显示文本?

有没有办法在 OpenGL 上显示一个 pygame 窗口?