Pygame 1.9.2 release

Issue #107 resolved
Lenard Lindstrom created an issue

Pygame 1.9.2 release TODO

This issue is for coordinating the release of Pygame 1.9.2.


  • Prebuilt libraries: ready for Win32, need Win64 builds.
  • Testing: Passes unit tests for Python 2.7 and Python 3.3/3.4

Issue #75 - freetype module

Comments (142)

  1. René Dudfield


    For the new freetype stuff, we can run them through a few games that are normally used for testing to see if they work. Perhaps asking on the mailing list for testing or a code review.

    We can use the release plan docs, which are in docs/howto_release_pygame.txt if they are still ok. Basically about two weeks of RCs and testing and announcing on the mailing list to give anyone time.

    OSX builds with new SDL. The apple pythons, and the pythons.

    I'll ask Brian if we can get the build bots updating from hg or not...

    Doc comments... clean up included doc comments included in offline docs, so spam isn't included. Or just don't include them. Or consider using the same comment system that is used on the projects (which has really good spam prevention tools, but still allows easy commenting).

    I've resigned myself to not being able to clean up a lot of the half finished Experimental modules. They can just be released marked as Experimental, and maybe get improved apon later I think.

    Open 1.9.2 bugs... we can make a list here of the bugs, and see if there are any we can fix.


  2. Lenard Lindstrom reporter
    • freetype: The Windows prebuilts are ready for another Windows installer release. In the mailing list post I will ask users to test freetype with it.
    • Automated Build Page: I have only supplied prebuilts for Python 2.6 and up. Compiling smpeg was a problem. I finally caved in and built it separately Visual Studio. For msvcr71.dll - if we continue to build Windows installers for Python 2.4 and 2.5 - I suppose I can reuse the smpeg library from the previous Pygame release. Also, I looked at uploading the builds directly to the bitbucket download page. But I did not find an api for that.
    • Open bugs: Yes, I will go over them as well.
  3. Lenard Lindstrom reporter

    Hope to have Windows prebuilts soon for both 32-bit and 64-bit Windows. Right now I am cross-compiling from Linux. I have only tested the 32-bit version on Wine so far. They work, though are not a drop-in replacement for the ones built on Windows XP. Next, I will test the 32-bit prebuilts on XP.

  4. Thomas Kluyver

    Is this any closer? Alpha testing started 2.5 years ago now (!) Can we as external contributors do anything to move it forwards?

  5. Thomas Kluyver

    PyGame 2 is probably going to be a much bigger deal - see issue #174 for that. But it would be really good to see a release of pygame on PyPI with wheels, so that people can easily install it. Even if that's just releasing the code as it is right now (or the last working version, if something just got broken), I think it's important to make it so that people can get it with pip.

  6. diliup gabadamudalige

    I am currently working with pygame-1.9.2a0.win32-py2.7 and this so far has no crash or errors. A final version would be good for stability. I think it is the "game" part in the name that is putting people off and delaying the improvements maybe because it sounds "gamish" and not serious.. ? ! :)

  7. René Dudfield

    Yes, pip install is the main thing I think #59. Would be nice to fix the current test failures, and go through the pull requests to review them, and possibly include them if they make sense.

    Doing some testing with python3.5 would be needed. There's a pull request for getting the test runner open. That might be a nice help for someone to see if that works and if so apply it.

  8. Thomas Kluyver

    I spent a while yesterday trying to get the Launchpad builds working on Ubuntu 16.04. I ran into a bizarre problem with numpy, however: when the test subprocess tries to import numpy, it fails with:

      File "/usr/lib/python2.7/dist-packages/numpy/core/", line 14, in <module>
        from . import multiarray
    ImportError: cannot import name multiarray

    Full build log here.

    I added an import numpy in the parent test runner process, and that doesn't cause an issue, but for some reason it doesn't work in the tests that try to use it (I was debugging sndarray). Any ideas?

    I also had to tweak the include and library paths a bit for the new Debian multiarch stuff. That patch isn't quite right yet - I'll have a better shot at getting it working, and make a pull request.

  9. Thomas Kluyver

    Travis tests are passing!

    I think it was moving from 2.6 to 2.7 that did it. Can we just drop Python 2.6 support? It's seemingly not working properly anyway, and 2.7 came out over five years ago. Pygame seems to be suffering from a lack of developer time, so let's not make extra work by trying to support old Python versions.

  10. Thomas Kluyver

    Updates on this: we have tests passing on Travis and on Launchpad, and most of the PRs that are fixing things (rather than adding things) are merged. The remaining things I see are:

    • Pull request #9, changing directory precedence for configuration on Unix. This is simple and probably OK, though I wonder if it would be better to change it to use the first directory it finds rather than the last.
    • Pull request #29, changing how SDL libraries are found on OSX. I don't know about this and can't test it; it also has a merge conflict now. Maybe best deferred to after the release?
    • Pull request #64, building Windows wheels on Appveyor. It would be good if someone could have a go at working out why compilation fails for Python 3.5.
    • Building 'manylinux' wheels via docker (not a PR) - I have this half-way working, but a lot of tests fail in the resulting builds. I suspect building newer versions of the SDL libraries from source might improve matters. This would be nice to have, but we shouldn't hold up the release for it.
  11. Thomas Kluyver

    Let's not lose the momentum here - does anyone have time to look at pull request #29 (finding SDL libraries on OS X) or pull request #64 (building Windows wheels on Appveyor)?

    Someone also opened an issue about segfaults with a recent commit (#297). If that's a recent regression, which isn't clear from the description, it would be nice to find a fix before doing a release.

  12. René Dudfield

    Awesome work Thomas. Also, thanks for the gentle pushes.

    I have some time this weekend :) Will attempt the OSX stuff first. I noticed that travisci now has OSX builds available!

    ps. I left a note on the appveyor pull request. If you merge your code in, then I should be able to slowly attempt to fix it. (if my notes don't fix it already).


  13. Thomas Kluyver

    Status update: PRs 9 and 64 were merged, and I've given up on trying to make manylinux wheels for now (see #295).

    The remaining PRs to be reviewed are:

  14. Thomas Kluyver

    @illume : another gentle push ;-) Do you think you might have time to look at those two pull requests this weekend? I hope they're the last things to do before making a 1.9.2 release.

    Of course, anyone else reading this is encouraged to review the PRs as well. It would also be useful if any Windows users could install the wheels from Appveyor (select the relevant Python version, and click the 'Artifacts' tab), and make sure that they work for running games on your computer. To run the aliens example game: python -m pygame.examples.aliens.

  15. René Dudfield

    Hi ya,

    I've been working on mac related things last weekend, and will continue this weekend. Unfortunately the latest development environment doesn't work that well for older versions of MacOS. So I'm going to concentrate my efforts on the travisci mac builds which have access to OS X 10.9 - 10.11. Tracking on issue #300

  16. diliup gabadamudalige

    With all due respect to all,

    D:\PYTHON\SoftwareDG\Utilities\file rename new\File Utility\File Utility DG.exe\ RuntimeWarning: use mixer: DLL load failed: The specified module could not be found. (ImportError: DLL load failed: The specified module could not be found.) Traceback (most recent call last): File "", line 28, in <module> File "FR_frompy.pyo", line 154, in <module> File "pygame__init.pyo", line 105, in getattr__ NotImplementedError: mixer module not available (ImportError: DLL load failed: The specified module could not be found.)

    So many years into pygame but this has NEVER been corrected.

    If I knew how to amend this I would have done it. Does anyone know a way around this??

    I sincerely hope that at least this time we can expect a PYGAME without all these unnecessary errors.

  17. Thomas Kluyver

    @diliupg can you file separate errors for those two issues (if there aren't already issues). And please include a traceback for the second one - I don't recall much from 2 years ago!

    It would also be helpful to know:

    • Which specific versions have you installed: not just 'from this page', but which file?
    • Can you test with the wheels that are now being built on Appveyor? See my message on the mailing list for how to do this. I hope that wheels built like this will become the official release, so if they work, we may not need to fix anything.
  18. Thomas Kluyver

    I've just tested the wheels from Appveyor with Python 3.5 and 2.7, both 64-bit. I could play the aliens example with sound on both. On 3.5 the whole test suite passed, but on 2.7 there was one error.

    FAIL: test_freetype_Font_path (pygame.tests.freetype_test.FreeTypeFontTest)
    Traceback (most recent call last):
      File "C:\Users\Thomas\Miniconda3\envs\pygame-py2\lib\site-packages\pygame\test
    s\", line 1127, in test_freetype_Font_path
        self.assertEqual(self._TEST_FONTS['sans'].path, self._sans_path)
    AssertionError: u'C:\ufffdsers\\Thomas\\Miniconda3\\envs\\pygame-py2\\lib\\site-
    packages\\pygame\\tests\\fixtures\\fonts\\test_sans.ttf' != 'C:\\Users\\Thomas\\

    It looks like a path has been misconstructed: that \ufffd is the unicode replacement character, presumably because the \U in C:\Users was interpreted as a unicode escape.

  19. diliup gabadamudalige

    In the repo above which is the latest Pygame version for Python27 and Python35 respectively running on 32 bit windows?

    Is it and

    or and respectively.

    Why is

    which is from the Pygame site such a large installation compared to the one on bitbucket

    The same applies to

    The Pygame._view error comes when you install from the PYGAME site. This has been persistant since2013. I have pointed this out several years ago. Good to have something happening at least now.

  20. Thomas Kluyver
    • The prebuilt- downloads are a bundle of libraries that are needed to compile pygame. If you just want to use pygame, you can safely ignore the prebuilt- files.
    • You can see the upload dates on there, and the latest ones are from last September. Testing builds of the latest code are available on Appveyor (select the relevant build, then click artifacts). When we do a release, they'll go on PyPI.
    • I've no idea about the size discrepancy: I didn't build either of the packages you're comparing.

    The Pygame._view error comes when you install from the PYGAME site. This has been persistant since 2013.

    I still don't know what the error you're referring to is! Please create an issue with the details. It's entirely possible that the installers on the download page have been the same build since 2013 and this issue is already fixed. If so, the most important thing is to do a new release and update the download page.

  21. diliup gabadamudalige


    I don't know how to create an issue. Maybe you can create one with this info.

    When you create a program with Python 27 and Pygame and when you run it ImportError: No module named _view props up. This happens when yoou install Pygame from the installation on PYGAME WEB SITE. If you install from the bitbucket site this error is NOT THERE. pygame._view module is missing. I don't know how to make it any clearer than that.

  22. Thomas Kluyver

    You can create an issue by clicking on the 'Issues' section to the left and then clicking the 'Create issue' button in the top right. Here's a shortcut:

    The key detail I'd want to add your description is what code you need to trigger the error. Does import pygame immediately cause the error? Does running python -m pygame.examples.aliens cause the error? Or does the code need to do something more specific to cause it?

    I'd guess, however, that the installers linked on the download page are relatively old, and this is something that was fixed by the time the newer installers were made and uploaded to the Bitbucket downloads section. If that is the case, there's nothing that needs to be fixed in the code, just the download page (which I don't have access to change). But it would be good if someone who's seen this error can confirm that it's gone with the latest wheel builds.

  23. Thomas Kluyver

    Status update: the remaining things I'm aware of both relate to OSX:

    Who can tackle Mac issues? Do we want to ask on the mailing list for people to help with testing and fixing stuff on Macs?

  24. PanderMusubi

    We are about to start a project with pygame, however we are only allowed to work in Python 3 with stable releases. If there are reasonable fool-proof instructions on what (which branch with specific commands) and how (which games and tutorials) to test on Linux, OSX and Windows, we could help out with some testing and detailed reporting on bugs.

  25. Thomas Kluyver

    Thanks Pander, that would be great!

    The most useful thing would be OSX testing, because that's the one I can't easily test and don't know how to fix. Using homebrew, you should be able to:

    hg clone ssh://
    brew install sdl sdl_image sdl_mixer sdl_ttf smpeg jpeg libpng portmidi freetype python3 python
    # Optionally create a virtualenv at this point
    pip install --upgrade setuptools pip
    pip install --upgrade numpy
    python install
    # Run the tests:
    python -m pygame.tests
    # Run an example:
    python -m pygame.examples.aliens

    With the tests, do you see the same errors that we got on Travis, described in issue #300?

    Ideally, try with both Python 3 and 2, but if you don't have time, just getting Python 3 tested would be valuable.

    If you also have time to test on Linux, the procedure is similar. On a Debian based distribution, you should be able to install the dependencies like this:

    sudo apt-get install python-dev python3-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libportmidi-dev libjpeg-dev libtiff4-dev libx11-6 libX11-dev xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic

    On Windows, we have ready built wheels on Appveyor. Select the relevant build from that page by Python version and 32/64 bit, click the artifacts tab, and download the wheel. You can install the wheel files with pip install pygame...whl (expand ... to the filename you downloaded).

  26. PanderMusubi

    For Ubuntu Xenial libtiff4-dev -> libtiff5-dev and libX11-dev -> libx11-dev

    Furthermore. hg fails:

    $ hg clone ssh:// The authenticity of host ' (' can't be established. RSA key fingerprint is SHA256:zzXQOXSRBEiUtuE8AikJYKwbHaxvSc0ojez9YXaGp1A. Are you sure you want to continue connecting (yes/no)? yes remote: Warning: Permanently added ',' (RSA) to the list of known hosts. remote: Permission denied (publickey). abort: no suitable response from remote hg!

    $ hg clone ssh:// remote: Permission denied (publickey). abort: no suitable response from remote hg!

  27. Thomas Kluyver

    Aha, thanks - I copied the command off our Travis job, which I think still runs on Trusty...or even Precise, maybe.

    Sorry, my mistake with hg, I copied the command without thinking. If you clone with https, it should work:

    hg clone
  28. PanderMusubi

    this error

    ```$ python -m pygame.tests ... loading pygame.tests.transform_test .......F......F..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... ====================================================================== FAIL: test_get_error (pygame.tests.base_test.BaseModuleTest)

    Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/pygame/tests/", line 572, in test_get_error e) AssertionError: Failed to access the SoundFont /usr/share/sounds/sf2/FluidR3_GM.sf2

    ====================================================================== FAIL: test_set_error (pygame.tests.base_test.BaseModuleTest)

    Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/pygame/tests/", line 589, in test_set_error e) AssertionError: Failed to access the SoundFont /usr/share/sounds/sf2/FluidR3_GM.sf2

    Ran 708 tests in 26.822s

    FAILED (failures=2)```

    and after installing fluid-soundfont-gm

    ```====================================================================== FAIL: test_get_error (pygame.tests.base_test.BaseModuleTest)

    Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/pygame/tests/", line 572, in test_get_error e) AssertionError: Failed to access the SoundFont /usr/share/sounds/sf2/TimGM6mb.sf2

    ====================================================================== FAIL: test_set_error (pygame.tests.base_test.BaseModuleTest)

    Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/pygame/tests/", line 589, in test_set_error e) AssertionError: Failed to access the SoundFont /usr/share/sounds/sf2/TimGM6mb.sf2

    Ran 708 tests in 29.049s

    FAILED (failures=2)```

    is fixed with sudo apt-get install fluid-soundfont-gm and in the source code you need to change /usr/share/sounds/sf2/TimGM6mb.sf2 into /usr/share/sounds/sf2/FluidR3_GM.sf2 (I think). Can you confirm this and let me know when this is fixed in hg so I can build and test again?

    PS Ubuntu Xenial has fluid-soundfont-gm 3.1-5

  29. Thomas Kluyver

    Can you try with timgm6mb-soundfont installed? This is working for me on Ubuntu, but the list of packages I specified may have been incomplete.

  30. PanderMusubi

    Sorry, small update. I needed to install two packages: sudo apt-get install fluid-soundfont-gm fluid-soundfont-gs

    $ dpkg -L fluid-soundfont-gs|grep '\.sf2' /usr/share/sounds/sf2/FluidR3_GS.sf2 $ dpkg -L fluid-soundfont-gm|grep '\.sf2' /usr/share/sounds/sf2/FluidR3_GM.sf2

    Resulting error is: AssertionError: Failed to access the SoundFont /usr/share/sounds/sf2/TimGM6mb.sf2

  31. PanderMusubi

    Yes, that did the trick! You have to add to your prerequisites: sudo apt-get install fluid-soundfont-gm timgm6mb-soundfont (not fluid-soundfont-gs).

  32. Thomas Kluyver

    OK, so on Ubuntu Xenial, here's the updated list of packages you needed to install:

    python-dev python3-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libportmidi-dev libjpeg-dev libtiff5-dev libx11-6 libx11-dev xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic fluid-soundfont-gm timgm6mb-soundfont
  33. PanderMusubi

    On Raspbian Jessie (on a Raspberry Pi 2) you need to install something different: install fluid-soundfont-gm musescore-soundfont-gm

    And add to the general list: apt-get install mercurial python-setuptools python3-setuptools python-numpy python3-numpy (I would prefer that over installations via pip.)

  34. PanderMusubi

    On Raspbian Jessie, the aliens example works, but the normal test results in failures=5, errors=13:

    File "/usr/local/lib/python2.7/dist-packages/pygame/tests/", line 33, in setUp scrap.init () error:: SDL is not running on know window manager

    and above that

    ...", line 192, in test_render_args ... AssertionError: Tuples differ: (8, 8, 8) != (10, 10, 10)

    This I copied manually from the screen. In which file can I find the output of the test?

  35. Thomas Kluyver

    I don't think the output is written to a file by default. You can write it to a file by redirecting:

    python -m pygame.tests > test_output.txt
  36. PanderMusubi

    I hope this Friday on the machine of my colleague. Before embarking on testing OSX, wanted to get it running on Ubuntu and Raspbian in order to know what I am doing. As I don't have a lot of experience in building on OSX, ask also others.

  37. Thomas Kluyver

    Are you running in a graphical environment on the raspi? If it's in a plain console, then you need to configure some things to run the tests:

    SDL_VIDEODRIVER=dummy SDL_AUDIODRIVER=disk python -m pygame.tests --exclude opengl
  38. PanderMusubi

    Will do that tomorrow morning. Please, remove any .deb dependencies on font packages. This is a nightmware for users of TeX Live and other users that work with custom font installations or alternative font sources. This is a long story why, which I gladly explain if needed. Usually font package dependencies are only for one or two example templates or test cases. Preferably, also do not ship any TTF or OTF files. Using font-config will help you to find font files in a dynamic way.

  39. PanderMusubi

    I had a quick look at all the font dependencies and font inclusion et cetera. Do you agree to create a separate issue for that to optimize that reducing font dependencies to a minimum and making font usage (in testing and examples) TTF/OTF agnostic?

  40. Thomas Kluyver

    Feel free to open an issue for it. I don't want to hold the 1.9.2 release up on that, however, because I suspect it's been that way for a long time, and it's proving more than hard enough already to actually get to a release, so we don't want to add more blockers unless they're really critical.

  41. Thomas Kluyver

    So it still fails... Looking into the code, it does actually use fontconfig (fc-list) to find fonts. Do you have fontconfig installed on the raspi?

  42. PanderMusubi

    Yes, that did the trick! (I am a bit lazy testing regarding pygame.) sudo apt-get install fontconfig it is

    Do you have a wiki page where this all gets documented?

    ```skipping pygame.tests.cdrom_test (tag 'interactive') skipping pygame.tests.midi_test (tag 'interactive') skipping pygame.tests.sndarray_test (tag 'subprocess_ignore') skipping pygame.tests.surfarray_test (tag 'subprocess_ignore') loading pygame.tests.base_test loading pygame.tests.blit_test loading pygame.tests.bufferproxy_test loading pygame.tests.camera_test loading pygame.tests.color_test loading pygame.tests.compat_test loading pygame.tests.cursors_test loading pygame.tests.display_test loading pygame.tests.draw_test loading pygame.tests.event_test loading pygame.tests.fastevent_test loading pygame.tests.font_test loading pygame.tests.freetype_test loading pygame.tests.ftfont_test loading pygame.tests.gfxdraw_test loading pygame.tests.image__save_gl_surface_test loading pygame.tests.image_test loading pygame.tests.imageext_test loading pygame.tests.joystick_test loading pygame.tests.key_test loading pygame.tests.mask_test loading pygame.tests.math_test loading pygame.tests.mixer_music_test loading pygame.tests.mixer_test loading pygame.tests.mouse_test loading pygame.tests.overlay_test loading pygame.tests.pixelarray_test loading pygame.tests.pixelcopy_test loading pygame.tests.rect_test loading pygame.tests.rwobject_test loading pygame.tests.scrap_test loading pygame.tests.sprite_test loading pygame.tests.surface_test loading pygame.tests.surflock_test loading pygame.tests.sysfont_test loading pygame.tests.threads_test loading pygame.tests.time_test loading pygame.tests.transform_test ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

    Ran 644 tests in 48.003s


  43. PanderMusubi

    Now running the build, tests and examples with Python 3 (from another hg clone). Extra requirement is sudo apt-get install python-opengl python3-opengl With Python 2 the example glcube works, with Python3 I get the error:

    The GLCUBE example requires PyOpenGL

    I also got that when I ran the example with Python 2 before installing python-opengl and python3-opengl. So pygame run with Python3 cannot find the opengl Python 3 bindings.

  44. Thomas Kluyver

    I've pushed a couple of fixes to the glcube example; it looks like the version of pyopengl packaged in Ubuntu has a bug, so I also needed to upgrade it using pip.

  45. Thomas Kluyver

    3.1.0 was what I got from PyPI (I didn't use the --pre flag to get the 3.1.1 alpha), so there's no need to upgrade it in Yakkety. I doubt you'll get an upgrade into Xenial now, but if you want to try, it looks like this is the issue:

    Aside: this sort of thing is why I rarely recommend distro packages - they've packaged this for an LTS release even though it's unusable, and it will now be a huge pain to fix.

  46. PanderMusubi

    After installing 3.1.0 from Yakkety I get a black window appearing shortly and then this error:

    p3/pygame$ python3 -m pygame.examples.glcube
    Traceback (most recent call last):
      File "/usr/lib/python3.5/", line 184, in _run_module_as_main
        "__main__", mod_spec)
      File "/usr/lib/python3.5/", line 85, in _run_code
        exec(code, run_globals)
      File "/usr/local/lib/python3.5/dist-packages/pygame/examples/", line 109, in <module>
        if __name__ == '__main__': main()
      File "/usr/local/lib/python3.5/dist-packages/pygame/examples/", line 104, in main
      File "/usr/local/lib/python3.5/dist-packages/pygame/examples/", line 63, in drawcube
        pos, color = allpoints[vert]
    TypeError: 'zip' object is not subscriptable

    Using 3.1.0 for Python 2 works.

    PS Please upvote the bug on launchpad, that might help.

  47. PanderMusubi


    hg pull hg update

    glcube with Python 3 and python3-opengl 3.1.0 works. Thanks. I haven't ran all the examples, but it looks like it all works. Which ones are essential to complete Ubuntu and Raspbian testing?

  48. Thomas Kluyver

    I'm not sure, to be honest; I haven't run them all either. I usually start with aliens because that's a reasonably complete mini-game, so it exercises input handling, 2d graphics, sprites and sound. If you have existing pygame code yourself, it would be great if you could check that it isn't broken with the latest pygame version.

    If anyone has plenty of spare time, they could get pyweek games that use pygame, and check that they still work with the latest version. But the biggest priority for doing a release is sorting out the Mac issues listed at #300.

  49. PanderMusubi

    Okay, I am on an up to date OSX machine (which is not my domain) and did the following:

    $ python
    Python 2.7.5...
    $ sudo easy_install pip
    $ pip install --upgrade setuptools pip
    $ pip install --upgrade numpy
    $ ruby -e "$(curl -fsSL"
    $ sudo xcodebuild -license
    $ ruby -e "$(curl -fsSL"
    $ brew install mercurial
    $ brew install sdl sdl_image sdl_mixer sdl_sdl_ttf portmidi smpeg jpeg freetype
    $ mkdir p2; cd p2
    $ hg clone
    $ cd pygame
    $ python # ended up installing XQuartz-2.7.9.dmg
    Hunting dependencies...
    SDL     : found 1.2.15
    Framework SDL not found
    FONT    : found
    Framework SDL_ttf not found
    IMAGE   : found
    Framework SDL_image not found
    MIXER   : found
    Framework SDL_mixer not found
    Framework CoreMIDI found
    Framework QuickTime found
    PNG     : found
    JPEG    : found
    PORTMIDI: found
    FREETYPE: found 2.6.3
    $ sudo python install
    Finished processing dependencies for pygame==1.9.2b1
    $ python -m pygame.tests
    $ python -m pygame.examples.aliens
    $ cd ../..
    $ brew python3
    $ xcode-select --install
    $ brew python3
    $ mkdir p3; cd p3
    $ hg clone
    $ cd pygame
    $ python3
    Using Darwin configuration...
    Hunting dependencies...
    SDL     : found 1.2.15
    Framework SDL not found
    FONT    : found
    Framework SDL_ttf not found
    IMAGE   : found
    Framework SDL_image not found
    MIXER   : found
    Framework SDL_mixer not found
    Framework CoreMIDI found
    Framework QuickTime found
    PNG     : found
    JPEG    : found
    PORTMIDI: found
    FREETYPE: found 2.6.3
    If you get compiler errors during install, doublecheck
    the compiler flags in the "Setup" file.
    $ sudo python3 install
    Writing /usr/local/lib/python3.5/site-packages/pygame-1.9.2b1-py3.5.egg-info
    $ python3 -m pygame.tests
    $ python3 -m pygame.examples.aliens

    Let me know when what and how to analyse and retest.

  50. Thomas Kluyver

    Status update:

    • We're nearly there on building wheels for the main three platforms. There are a few things to be finished up on pull request #68 to make Linux wheels.
    • Pull request #29 for finding SDL libraries on OSX is still open, but now that we're making OSX wheels without that, maybe it's not so important.
  51. René Dudfield

    I think pull request #29 is going to require a LOT of testing. However, perhaps we have to do a lot of that testing anyway. I'm not sure. I really think the binary wheels are 99% better than a .dmg which requires sudo permission to copy in Framework builds. Also, the homebrew build already works, or can easily modify things. The one thing with mac builds now is to try to make sure py2app can still work. If it does, I'd say we don't even bother with .dmg releases. I guess we will find out once more testing happens.

    I asked on the other open pull requests for more information and help. Some of them look pretty good, and are well done. However, I don't think they should be blockers.

    Once the linux wheel stuff is done (compiling those other dependencies), we can do a release candidate. Then publicise it more widely and give people two weeks to maybe say... 'wait! this crashy thing needs fixing first'.

    I'll update the release plan: docs/howto_release_pygame.txt

    Additionally we need to make sure WHATSNEW is updated with the relevant changes for this release.

    The other thing I'm going to try and document is the OSX building on travisci, and also the appveyor stuff. So hopefully other people can more easily change things and contribute.

    ps. I'm taking the month off to work on pygame stuff.

  52. Thomas Kluyver

    I'm taking the month off to work on pygame stuff.

    Awesome! Thanks on behalf of everyone using pygame who doesn't know you're doing this :-)

  53. René Dudfield


    That reminds me... also need to update all the credits listings. The final documentation work I am doing at this pull request.

    One thing that might be a blocker is the sysfont module, which was changed to just use fc-list. Unfortunately this is not everywhere, and causes a very long pause on some systems. And I think it triggers a 'download X11' dialog on mac, since X11 is not there by default anymore.

  54. PanderMusubi

    The two attached scripts help run all examples with Python 2 and 3. Press enter after each example to progress to the next example.

    I spend about four days testing, fault finding and documenting for Ubuntu, Raspbian and OSX. I did this in the context of a foundation I am working for. My colleagues were so kind to help out by making some hardware available. So, if you would, please add to the credits for the 1.9.2. release that part of the testing was done by: Stichting Thanks

  55. Caleb Hattingh

    I ran the tests on OS X, using homebrew versions of SDL things. There were 3 failed tests and 2 errors:

    FAIL: test_get_fonts (pygame.tests.font_test.FontModuleTest)
    Traceback (most recent call last):
      File "/Users/calebhattingh/temp/env_pygame_3/lib/python3.5/site-packages/pygame-1.9.2b8-py3.5-macosx-10.11-x86_64.egg/pygame/tests/", line 94, in test_get_fonts
        self.failUnless(name.islower(), name)
    AssertionError: False is not true :
    FAIL: test_get_fonts (pygame.tests.font_test.FontModuleTest)
    Traceback (most recent call last):
      File "/Users/calebhattingh/temp/env_pygame_3/lib/python3.5/site-packages/pygame-1.9.2b8-py3.5-macosx-10.11-x86_64.egg/pygame/tests/", line 94, in test_get_fonts
        self.failUnless(name.islower(), name)
    AssertionError: False is not true :
    FAIL: testLoadPNG (pygame.tests.image_test.ImageModuleTest)
    see if we can load a png with color values in the proper channels.
    Traceback (most recent call last):
      File "/Users/calebhattingh/temp/env_pygame_3/lib/python3.5/site-packages/pygame-1.9.2b8-py3.5-macosx-10.11-x86_64.egg/pygame/tests/", line 81, in testLoadPNG
        self.assertEquals(pixel_x1_y1, greyish_pixel)
    AssertionError: (109, 120, 129, 140) != (110, 120, 130, 140)
    ERROR: test_load (pygame.tests.mixer_music_test.MixerMusicModuleTest)
    Traceback (most recent call last):
      File "/Users/calebhattingh/temp/env_pygame_3/lib/python3.5/site-packages/pygame-1.9.2b8-py3.5-macosx-10.11-x86_64.egg/pygame/tests/", line 45, in test_load
    pygame.error: Unrecognized music format
    ERROR: test_image_convert_bug_131 (pygame.tests.surface_test.SurfaceTypeTest)
    Traceback (most recent call last):
      File "/Users/calebhattingh/temp/env_pygame_3/lib/python3.5/site-packages/pygame-1.9.2b8-py3.5-macosx-10.11-x86_64.egg/pygame/tests/", line 688, in test_image_convert_bug_131
        self.assertEquals( im.get_palette(),  ((0, 0, 0, 255), (255, 255, 255, 255)) )
    pygame.error: Surface has no palette to get

    The paste of the output:

    The aliens example worked, but as noted in several places the transparency in the sprites was missing. The specific commit was:

    $ hg summary
    parent: 3578:2b59043d4151
     Merged in manylinux-wheels (pull request #68)
    branch: default
    commit: 5 unknown (clean)
    update: (current)

    I don't know whether this is helpful, but it's another data point at least.

  56. Thomas Kluyver

    Status update:

    We now have wheels building on all three major platforms (Linux, Windows, Mac). 😀

    • See #300 for some issues with the Mac builds; we think it's the same dynamic linking issues we had with our Linux builds; the solution might require building SDL and SDL_image ourselves on OSX.
    • Pull request #70 has some changelog and doc updates @illume is working on.

    Anything else?

  57. Thomas Kluyver

    Oh, plus the test failures @cjrh reported above; I'm not sure what caused those. Maybe building newer versions of SDL libraries ourselves would help?

  58. Caleb Hattingh

    My homebrew is up-to-date and these are my versions:

    $ python
    Using Darwin configuration...
    Hunting dependencies...
    SDL     : found 1.2.15
    Framework SDL not found
    FONT    : found
    Framework SDL_ttf not found
    IMAGE   : found
    Framework SDL_image not found
    MIXER   : found
    Framework SDL_mixer not found
    Framework CoreMIDI found
    Framework QuickTime found
    PNG     : found
    JPEG    : found
    PORTMIDI: found
    FREETYPE: found 2.6.5

    Do the wheels mentioned above include the SDL? And if so, any different versions? IMO if it's possible to include as many dependencies as possible into the wheels, that would be best. I've had problems for many years getting pygame to work, always with problems with dependencies.

  59. Thomas Kluyver

    The wheels should bundle SDL and all libraries that we can't assume are part of the underlying OS.

    I'm assuming that the test failures you listed above were the result of building from source, not of installing one of the Mac wheels?

  60. Caleb Hattingh

    Much better, only 2 failed tests, both to do with fonts:

    FAIL: test_get_fonts (pygame.tests.font_test.FontModuleTest)
    Traceback (most recent call last):
      File "/Users/calebhattingh/temp/pygamewheel/env/lib/python3.5/site-packages/pygame/tests/", line 94, in test_get_fonts
        self.failUnless(name.islower(), name)
    AssertionError: False is not true :
    FAIL: test_get_fonts (pygame.tests.font_test.FontModuleTest)
    Traceback (most recent call last):
      File "/Users/calebhattingh/temp/pygamewheel/env/lib/python3.5/site-packages/pygame/tests/", line 94, in test_get_fonts
        self.failUnless(name.islower(), name)
    AssertionError: False is not true :
    Ran 677 tests in 24.531s
    FAILED (failures=2)

    This was using Python 3.5.2 (homebrew-supplied), and from inside a virtualenv. This was the wheel that got downloaded, is it correct?

    $ pip install pygame
    Collecting pygame
      Downloading pygame-1.9.2b6-cp35-cp35m-macosx_10_9_intel.whl (4.4MB)
        100% |████████████████████████████████| 4.4MB 320kB/s
    Installing collected packages: pygame
    Successfully installed pygame-1.9.2b6
  61. Caleb Hattingh

    Ok, I figured out why that font test is failing. One of the fonts on my system has a missing family field (GeezaPro.ttc). In pygame/, the output of /usr/bin/fc-list is parsed and when this font is processed, the family field is blank:

    def initsysfonts_unix(path="fc-list"):
        """use the fc-list from fontconfig to get a list of fonts"""
        fonts = {}
            # note, we capture stderr so if fc-list isn't there to stop stderr
            # printing.
            flout, flerr = subprocess.Popen('%s : file family style' % path, shell=True,
                                            stdout=subprocess.PIPE, stderr=subprocess.PIPE,
        except Exception:
            return fonts
       entries = toascii(flout)
            for line in entries.split('\n'):   # <--- line = '/System/Library/Fonts/GeezaPro.ttc: :style=Regular,,Ordinr,Normal,Normaali,Regolare,,,Regulier,,,'
                    filename, family, style = line.split(':', 2)  # <--- filename = ''/System/Library/Fonts/GeezaPro.ttc', family = '', style = 'style=Regular,,Ordinr,Normal,Normaali,Regolare,,,Regulier,,,'
                    if splitext(filename)[1].lower() in OpenType_extensions:
                        bold = 'Bold' in style
                        italic = 'Italic' in style
                        oblique = 'Oblique' in style
                        for name in family.split(','):
                            if name:
                            name = splitext(basename(filename))[0]
                            _simplename(name), bold, italic or oblique, filename, fonts)
                except Exception:
                    # try the next one.
        except Exception:
        return fonts

    The family becomes the key in the Sysfonts dict. In, function test_get_fonts() calls pygame_font.get_fonts(), which creates a list out of the Sysfonts keys, one of which is now an empty string. As a result, self.failUnless(name.islower(), name) fails.

    So basically, when building the Sysfonts dict, fonts with missing families should maybe be filtered out? Or given a generic name? I've no idea what the recommended behaviour for pygame might be.


  62. PanderMusubi

    For testing, use very common fonts and add a test on the output of fc-list to check if they are available.

  63. Thomas Kluyver

    Status update: we seem to have stalled a bit!

    • The dynamic linking issues with the OSX builds described in #300 are the biggest priority for release.
    • Pull request #71 seems like a simple fix for handling angles. I'll merge it in a few days if no-one objects.
    • Issue #313 concerns drawing Polygons
    • Pull request #70 with changelog updates and release doc tweaks
  64. Thomas Kluyver

    pygame need more code in C++....

    I can't tell if this is a joke or not! Remember that it's really hard to tell sarcasm on the internet without a ;-) to make it clear.

    If it was a serious comment, then:

    • That's definitely something for after the 1.9.2 release, so please make a new issue to discuss it so that this one can stay focussed on the release.
    • In that new issue, explain a bit why you think that more C++ would help.
  65. diliup gabadamudalige

    Hi! :) (friendly smile)

    the blitting routines in pygame tend to be quite slow so some C++ code under the hood can help. I was under the impression that Pygame had some C++ code under the hood. If that is correct then what I said maybe considered for the future. If not can be ignored. It was most definitely NOT sarcasm. I use Pygame quite a bit and some speed in bitting can help when there are a lot of objects on the screen. :)

  66. diliup gabadamudalige

    Pygama IS about graphics and graphics IS about screen blitting in the majority so I hope this can be worked on. Unfortunately I do not know any C++ else I would have helped even in a small capacity.

  67. diliup gabadamudalige

    one last question. There is no component called blit. Sounder which component should this ticket be raised? sprite? surface? display? This is the closest I can find.

  68. Thomas Kluyver

    I don't know, sorry. Pick one of those - we can always change it later if someone knows better.

  69. Thomas Kluyver

    Status update: not much has happened. Here are the things I think need attention to prepare for a release:

    • Issues with the OSX wheel builds described in #300
    • Polygon drawing issue #313 (I don't know how serious this is, but it would be good if someone could have a look)
    • @illume's documentation work in pull request #70
  70. Thomas Kluyver

    We seem to be stuck again. If the necessary person-time isn't available to fix OSX wheels, I'd suggest that we cut a 1.9.2 release with Linux and Windows wheels, which are already working. That would allow downstream packagers to ship the new release, e.g. in Linux distros. We're not taking anything away from Mac users: they'll still be able to install it with Macports or Homebrew.

  71. diliup gabadamudalige

    Please release the Linux/Windows version. The Mac version can come later. I think you should release any version that is done as it is completed without waiting for other OS versions to fall in line. It really doesn't make sense.

  72. Thomas Kluyver

    It is not yet released. @illume , again, let us know if there's anything we can do to help make the release happen.

  73. diliup gabadamudalige


    what is the actual reason for the delay in releasing the Windows version of Pygame 1.9.2?

  74. Thomas Kluyver

    It's up to René, but he seems to have dropped off the face of the earth. I've just sent him an email to try to get in contact. Hopefully he's just been busy, but if we can't get in touch with him after a couple of weeks, I think we'd have to try to work out another way to move forwards.

  75. Arno Nym

    Couple of weeks... unfortunately we're developing a game for some research project which has a deadline and I'd love to get my hands on production v1.9.2 asap.

  76. Thomas Kluyver

    There are betas on PyPI; if we do a release soon, it won't be significantly different from those. Sorry, but I can't make a release, and working around the primary maintainer of the project is not something I'd do lightly - René may be on holiday, or simply busy with other things.

  77. Arno Nym

    Sorry, "fallen off the face of the earth" sounded somewhat worrying to say the least. PyGame has already become a pretty wide spread solution to build games (and other media applications) in Python. It'd be pretty unpleasant if its primary maintainer just disappeared.

  78. diliup gabadamudalige

    With all due respect to Rene, can you please let someone who can look after the upkeep of Pygame take over and move on rather than do nothing? Please....

  79. Thomas Kluyver

    It would! I hope he's OK. I only know him through the internet, so I'm just going on publicly available information to contact him.

    "Dropped off the face of the earth" is a fairly common phrase for when you lose contact with someone. I realise it could have sounded more alarming - sorry, I tend to slip into using colloquial idioms. Using English as the common language needs native speakers like me to put in a bit of effort too, to make sure we're being clear. :-)

  80. diliup gabadamudalige

    I agree with you but when are we moving on? Why is Rene not responding? Is he not interested or simply don't care?

  81. Thomas Kluyver

    Please try to be respectful; I realise this is frustrating, but René has put in a lot of work on Pygame, and as far as I know, it's all on a volunteer basis. He may be very busy with work or family life at the moment. He may be injured or ill, or suffering from burn-out. This tone ("Is he not interested or simply don't care?") is not the kind of interaction that would make someone eager to spend time on the project.

    Again, I'm frustrated by this situation as well, so I understand your annoyance, but grumpy comments on the internet don't solve anything. ;-)

    As I said, I'm going to give it a couple of weeks for Rene to respond before I try to find a workaround. I've set a reminder in my calendar. Pygame 1.9.2 has been in the works for over three years, so it will last a couple more weeks!

    If anyone knows René or a better way to contact him, please do try to reach him. I'm only going on a publicly available email address.

  82. diliup gabadamudalige

    There was nothing disrespectful in my message. I asked three questions which should have been asked a long time ago. There is no disrespect intended. If one has no time to do something does everyone have to suffer? Isn't it better to hand over the work to someone who can move forward rather than hang on to it? Aren't we all grown up people here? I am only trying to be practical.

  83. diliup gabadamudalige

    I messaged Rene on twitter, facebook and some other place. we'll see what happens. :)

  84. Thomas Kluyver

    I'm afraid it came across as brusque, even if you didn't mean it to. Without body language or tone of voice, everything sounds more angry over the internet, so it's worth making an extra effort to be nice compared to face-to-face conversations, so that we don't end up sniping at one another.

  85. diliup gabadamudalige

    ok. I just had a facebook chat with Stephan Deibel the CEO ofWingware and he says this.. "Couldn't it just be forked? People interested in moving it forward could create a bitbucket project pygame-fork or something like that and just move forward..."

    can't we doo that?

  86. Arno Nym

    Well, we could. Actually, you could do it yourself too. But I hesitate going so far so soon. Even I, being involved in a project with a deadline, would rather say, let's give René a chance to keep his project going. I find several weeks a bit long, but who am I after all to make demands? Seriously, if I were René I'd be really depressed if my project kinda two-timed while I was on vacation or whatever he's doing right now.

    So, well... nobody stops you guys from forking the project but I think we should give René a chance to come back.

  87. Thomas Kluyver

    To reinforce what Hendrik said: forking is possible, but it's not a good option. It leads to confusion, duplicated effort, and potentially hurt feelings - see OpenOffice/LibreOffice for a high profile example. It's the open source equivalent of direct military action: we don't go there until we've exhausted all other opportunities.

    My first preference is that we get in touch with René and he helps us finish up the release. I'm allotting a couple more weeks to trying this, because it's the best result for everyone, and I don't want to bypass René just because he's on vacation, dealing with a family emergency or something similar.

    Failing that, the next best option is to try to keep going without René, but still within the Pygame project. I haven't worked out exactly how to do this yet - and I'm not interested in trying until it becomes necessary - but I'll make an educated guess that it's possible.

    Only if both of those options prove impossible would I consider forking the project. And even then, I'm not much inclined to be involved in a fork myself - it's a big project, and I have plenty of other things to work on.

  88. diliup gabadamudalige

    I would have forked it if I had the capacity and the knowledge to do so. I got back into programming in 2013 and have been waiting since then for Rene to come back. I sent him messages last night on Twitter, Facebook and from some other site which I cannot remember. I hope he comes back t least before Christmas.... :)

  89. Joram Brenz

    Hey, I was looking at this because I was trying to upgrade my projects to python3. I understand that a release has to be planned carefully. But I noticed that there is a package named python3-pygame in debian experimental. Since the linux part of the release is relatively completed, can we get this package moved to unstable or testing?

    For now I downloaded and compiled the sourcecode from this repository. It works fine with everything that I did so far. Is there anything one can do to help this project? Like running some specific tests? Keep up the good work!

  90. Thomas Kluyver

    We don't control the packaging in Debian, that's up to the Debian maintainer. Normally I'd expect it to be uploaded to unstable soon after we make a stable release. Then there's a 10 day delay, and it goes into testing if there are no serious bugs discovered. We've just made a release candidate, so if all goes well hopefully there will be a stable release soon.

    Thanks for testing - the most important thing is checking it with your own code, in case we've broken something that the tests don't cover. We run the tests automatically, but it's always possible that something on your system will affect them, so if you have a few minutes to spare, try running them with python -m pygame.tests.

  91. Aivar Annamaa

    Not sure if this is right place, but here are my test results for rc1 wheels.

    Windows 10 64-bit, official Python 3.5.2 32-bit

    Windows 10 64-bit, Anaconda Python 3.5.2 64-bit

    Windows 7 64-bit, Anaconda Python 3.5.2 64-bit

    • Aliens example looked and sounded fine
    • All tests passed

    Fedora 24 64-bit on VMWare, official Python 3.5.2

    CentOS 7 on VMWare, custom built Python 3.5.2 (from Thonny -

    • Aliens example looked fine in both distros. Couldn't test the sound because of my VM issues.
    • Single (and the same) test failed in both distros (following traceback is taken from Fedora, but it looked similar in CentOS):
        ERROR: all_tests_for (pygame.tests.mixer_music_test.AllTestCases)
        Traceback (most recent call last):
          File "test/", line 1, in all_tests_for
        subprocess completely failed with return code of -6
        cmd:          ['/usr/bin/python3', '-m', 'pygame.tests.test_utils.test_runner', 'pygame.tests.mixer_music_test', '--exclude', 'interactive,subprocess_ignore,python3_ignore']
        test_env:     environ({'XDG_SEAT': 'seat0', 'XDG_MENU_PREFIX': 'gnome-', 'XDG_CURRENT_DESKTOP': 'GNOME', 'XAUTHORITY': '/run/user/1000/gdm/Xauthority', 'MAIL': '/var/spool/mail/aivar', 'GJS_DEBUG_TOPICS': 'JS ERROR;JS LOG', 'SESSION_MANAGER': 'local/unix:@/tmp/.ICE-unix/1445,unix/unix:/tmp/.ICE-unix/1445', 'MODULEPATH': '/etc/scl/modulefiles:/etc/scl/modulefiles:/usr/share/Modules/modulefiles:/etc/modulefiles:/usr/share/modulefiles', 'USERNAME': 'aivar', 'QT_IM_MODULE': 'ibus', 'COLORTERM': 'truecolor', 'XDG_SESSION_TYPE': 'x11', 'PATH': '/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/aivar/.local/bin:/home/aivar/bin', 'MODULESHOME': '/usr/share/Modules', 'DISPLAY': ':0', '_': '/usr/bin/python3', 'XDG_RUNTIME_DIR': '/run/user/1000', 'LOADEDMODULES': '', 'HISTCONTROL': 'ignoredups', 'BASH_FUNC_module()': '() {  eval `/usr/bin/modulecmd bash $*`\n}', 'PWD': '/home/aivar', 'LS_COLORS': '..<skipped>...', 'GDM_LANG': 'en_US.UTF-8', 'LANG': 'en_US.UTF-8', 'XMODIFIERS': '@im=ibus', 'SDL_VIDEO_X11_WMCLASS': '-m', 'LESSOPEN': '||/usr/bin/ %s', 'GDMSESSION': 'gnome', 'HISTSIZE': '1000', 'TERM': 'xterm-256color', 'XDG_SESSION_DESKTOP': 'gnome', 'XDG_VTNR': '2', 'USER': 'aivar', 'GJS_DEBUG_OUTPUT': 'stderr', 'DESKTOP_SESSION': 'gnome', 'WINDOWID': '29360134', 'SHLVL': '2', 'BASH_FUNC_scl()': '() {  local CMD=$1;\n if [ "$CMD" = "load" -o "$CMD" = "unload" ]; then\n eval "module $@";\n else\n /usr/bin/scl "$@";\n fi\n}', 'HOSTNAME': 'localhost.localdomain', 'QT_QPA_PLATFORMTHEME': 'qgnomeplatform', 'XDG_SESSION_ID': '1', 'VTE_VERSION': '4402', 'LOGNAME': 'aivar', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'WINDOWPATH': '2', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1000/bus', 'HOME': '/home/aivar', 'SHELL': '/bin/bash'})
        working_dir:  /tmp/tmpejm7i8c3
        return (first 10 and last 10 lines):
  92. Thomas Kluyver

    I see a similar failure. We're already in the process of releasing 1.9.2, but do you want to open an issue for it?

  93. Aivar Annamaa

    I got the same error on Ubuntu 16.04 on VMWare. It may be because of my VM peculiarities so I can't be sure it's real problem. I'll try to test it on another computer tomorrow.

  94. Thomas Kluyver

    I got something that looked quite similar on Ubuntu on real hardware, so it does seem like a real problem.

  95. Aivar Annamaa

    I created the issue (#317) but I don't want to say this should postpone the release (especially considering that Linux packagers don't use the wheels and bundled dependencies anyway)

  96. Thomas Kluyver

    No it shouldn't, especially since I've already partly made the release, and we're just waiting for Paul to upload it ;-)

  97. Thomas Kluyver

    Nearly five years after this issue was opened to track the 1.9.2 release, it's done. Thank-you to everyone who made it happen!

  98. Log in to comment