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

我最近买了一台新的 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,但不幸的是这没有任何区别。

标签: macos python-2.7 pygame


【解决方案1】:

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

pip3 install pygame

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

pip3 install pygame==2.0.0.dev4

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

【讨论】:

    【解决方案2】:

    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

    1. 安装一些依赖项brew install sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf。这需要homebrew
    2. 转到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 版本。
    3. 删除任何以前的pygame,pip uninstall pygame(如果pygame 目录存在于site-packages 中,则删除它:rm -rf pygame*
    4. 从 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 是最新稳定版本的标签名称,在撰写本文时,请参阅“查找上面的最新稳定版本”)
    5. 进入新克隆的pygame目录:cd pygame
    6. 运行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
    7. 运行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
    【解决方案3】:

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

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

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

    【讨论】:

    • 它对我有用!谢谢!我有以下内容:pygame 2.0.0.dev7 (SDL 2.0.12, python 3.7.7)
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      我在使用 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 之间似乎存在关键事件处理差异。我的代码不再有效!
      【解决方案6】:

      最新更新适用于 MacOS 10.14.1

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

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

      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 上没有任何更好的结果。有其他人能够让它工作吗?
      【解决方案7】:

      我遇到了同样的问题,通过将 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。

      【讨论】:

        【解决方案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】:

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


        我在带有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 似乎可行。

        【讨论】:

          【解决方案10】:

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

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

          感谢您的帮助!

          【讨论】:

          • @BeatBreaker82 的回答为我修复了 Mojave
          猜你喜欢
          • 2021-06-29
          • 2018-01-03
          相关资源
          最近更新 更多