Windows 下 Python 3.14 安装 Pygame 失败该如何解决?
这次安装失败发生在 Pygame 2.6.1 的源码构建阶段。如果要继续使用 Python 3.14,可以在独立虚拟环境中安装提供对应 wheel 的社区分支 pygame-ce。如果项目必须使用原版 pygame==2.6.1,可以改用标准 CPython 3.13 环境安装。
为什么会报错?
日志中的这一行说明 pip 选择了源码包:
Using cached pygame-2.6.1.tar.gz (14.8 MB)
随后,构建脚本尝试导入以下模块,先后失败:
ModuleNotFoundError: No module named 'distutils.msvccompiler'
ModuleNotFoundError: No module named 'setuptools._distutils.msvccompiler'
Python 从 3.12 起已经移除了标准库中的 distutils。日志还表明,这次隔离构建环境中的 setuptools 无法提供构建脚本所需的备用模块路径。Python 官方说明
Pygame 2.6.1 的 PyPI 文件列表中有 CPython 3.13 的 Windows wheel,没有列出 CPython 3.14 wheel。结合日志可以判断,这次安装进入了存在兼容问题的源码构建流程。Pygame 2.6.1 安装文件
Defaulting to user installation 只是安装位置提示。日志中的 PNG、JPEG 路径提示也不是这次 traceback 的最终报错。重启电脑或重装同一版本的 Python,通常解决不了这个构建兼容问题。
方案一:保留 Python 3.14,安装 pygame-ce
如果项目允许使用社区分支,可以选择 pygame-ce。它是独立的发行包,PyPI 已提供 CPython 3.14 的 Windows x86-64 wheel,例如 pygame_ce-2.5.8-cp314-cp314-win_amd64.whl。pygame-ce 项目与安装文件
在项目目录下执行以下命令,前提是 py 命令能找到已安装的 Python 3.14:
py -3.14 -m venv .venv314
.venv314\Scripts\python.exe -m pip install --upgrade pip
.venv314\Scripts\python.exe -m pip install --only-binary=:all: pygame-ce
安装包名称是 pygame-ce,代码中仍使用 import pygame。安装后可以检查导入结果:
.venv314\Scripts\python.exe -c "import sys, pygame; print(sys.executable); print(pygame.version.ver); print(pygame.__file__)"
命令直接使用虚拟环境中解释器的完整路径,无需先激活环境。运行程序时也使用同一个解释器:
.venv314\Scripts\python.exe your_game.py
将 your_game.py 替换为实际脚本名,并在 IDE 中选择 .venv314\Scripts\python.exe。
pygame-ce 和原版 Pygame 有共同的模块名称,应分别放在不同的虚拟环境中。已有项目切换分支后,需要验证实际使用的 API 和运行行为。如果依赖文件中写着 pygame,也要相应调整,避免再次安装原版包。
方案二:使用 Python 3.13 安装原版 Pygame
如果课程、项目依赖或运行环境明确要求 pygame==2.6.1,可以并行安装标准 CPython 3.13,再创建另一个虚拟环境。Pygame 2.6.1 提供了对应的 Windows x86-64 和 x86-32 wheel。对应安装包列表
py -3.13 -m venv .venv313
.venv313\Scripts\python.exe -m pip install --upgrade pip
.venv313\Scripts\python.exe -m pip install --only-binary=:all: pygame==2.6.1
.venv313\Scripts\python.exe -c "import pygame; print(pygame.version.ver)"
此方案使用 Python 3.13 安装原版 Pygame,不是在 Python 3.14 中安装。原有的 Python 3.14 可以继续保留。
如果仍然提示找不到安装包
--only-binary=:all: 要求 pip 使用预编译 wheel,避免再次尝试源码构建。如果出现 No matching distribution found,不要继续重复构建,先检查当前解释器、架构和软件源:
.venv314\Scripts\python.exe -m pip --version
.venv314\Scripts\python.exe -m pip debug --verbose
.venv314\Scripts\python.exe -m pip config list
以上命令用于方案一。使用方案二时,将 .venv314 替换为 .venv313。重点检查解释器版本和 wheel 标签是否匹配,以及所用镜像是否提供对应文件。
不要把 cp313-cp313 wheel 改名后交给 Python 3.14 安装。单靠升级 setuptools、安装编译器或关闭构建隔离,不能保证 Pygame 2.6.1 在 Python 3.14 上完成源码构建。即使解决了一个模块导入错误,后面仍可能遇到其他兼容问题。
备注:内容仅供参考。
