pyglet:纯 Python 的游戏与多媒体库

pyglet 在 GitHub 上拿到了 2,198 个 Star。

这个库用纯 Python 写了一套跨平台的窗口和多媒体框架。做游戏、做可视化工具、做演示程序,窗口管理、图形渲染、音频播放、输入处理这些基础能力,它都能直接提供。

正文顶部截图

1、这玩意儿是干嘛的

就一件事:给 Python 开发者提供一套完整的窗口和多媒体基础设施。

窗口管理、输入事件处理、手柄和摇杆、OpenGL 图形渲染、图片和视频加载、声音和音乐播放。Windows、macOS、Linux 三个平台都能跑。

最近刚发布了 v2.1 大版本,带来了一些新功能,也做了一些必要的破坏性变更。如果你之前的项目跑不起来了,可以去文档里看迁移指南。

2、为什么要用它

用 Python 做游戏或者图形应用的人,通常面临一个选择:用 Pygame 还是直接上 OpenGL。

Pygame 够用但功能有限。直接用 OpenGL 又太底层,窗口创建、事件循环、资源加载这些脏活都得自己写。

pyglet 刚好补了这个空档。窗口、事件、资源加载这些基础设施全包了,同时开放 OpenGL 接口让你做自定义渲染。纯 Python 实现,没有外部依赖,装完就能用。

README区域截图

3、能干哪些事

零外部依赖。 除了 Python 本身,不需要装别的东西。项目打包分发也很方便,可以直接配合 Nuitka 或者 PyInstaller 使用。

多窗口和多显示器支持。 允许使用多个平台原生窗口,对多显示器环境下的全屏应用做了完整支持。

格式支持广。 可选搭配 FFmpeg 播放 MP3、OGG、WMA 音频和 MPEG2、H.264、H.265、WMV、Xvid 等视频格式。不装 FFmpeg 也能直接支持 wav、png、bmp 等标准格式。

纯 Python 实现。 全部代码都是 Python,用 ctypes 调用系统库。改代码、做贡献不需要任何编译步骤或者配置编译器。批量绘制做了专门优化,性能不差。

BSD 开源协议。 商业项目和开源项目都能用,限制很少。

4、环境要求和安装

需要 Python 3.8 以上。PyPy 也能跑。

支持平台:

  • Windows 7 或更高版本
  • macOS 10.3 或更高版本
  • Linux(需要 OpenGL、GLX、GDK 2.0+ 或 Pillow、OpenAL 或 Pulseaudio)

从 pyglet 2.0 开始,需要 OpenGL 3.3+。

安装:

pip install --upgrade --user pyglet

也可以直接从源码装,或者把项目目录加到 PYTHONPATH 里直接用,不需要编译。

开发模式安装:

pip install -e .

5、社区和贡献

pyglet 有活跃的开发者社区和用户群体。通过 Discord 服务器和邮件列表可以获取帮助。

想参与贡献的话,可以从文档入手。读代码的时候把相关文档也看一遍,如果看了文档还是看不懂代码,那就是文档需要改进的信号。做大改动之前先在社区里沟通一下,避免重复劳动。

提交 PR 的时候需要同时更新代码里的 docstring 和编程指南,保证文档和代码一致。

6、适合哪些人用

用 Python 做游戏或者图形演示的开发者。需要跨平台窗口和多媒体能力的工具开发者。不想引入复杂依赖、希望项目轻量好打包的人。想直接用 OpenGL 但又不想自己写窗口和事件循环的人。

的开发者。需要跨平台窗口和多媒体能力的工具开发者。不想引入复杂依赖、希望项目轻量好打包的人。想直接用 OpenGL 但又不想自己写窗口和事件循环的人。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐