问题让 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 Catalina
、Python 3.7.5
、PyGame 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=4274pygame 问题在这里: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 上显示除空白屏幕外的任何内容的主要内容,如果未能解决你的问题,请参考以下文章
我的 React 应用程序在 iPhone 上的某个阶段显示一个空白页面。在其他任何地方(甚至是 MacOS 上的 Safari),它都能按预期工作