ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

pip安装pygame报错全指南:环境配置与镜像源实战

pip安装pygame报错全指南:环境配置与镜像源实战 玩 Python 的不管是写脚本、做爬虫还是搞小游戏第一道坎往往不是语法而是环境安装。前几天有个朋友问我他想用 pygame 做一个 9×9 的三消游戏结果卡在pip install pygame这一步了报错五颜六色看都看不懂。我说这也是很多人的常态pygame 本身是个很稳的库真正折腾人的是 pip、Python 环境、网络这几个因素搅在一起。这篇就把我这些年踩过的坑一次性说清楚从“pip 找不到”到“building wheel 失败”照着排查大概率能让你在十分钟内跑出一个 pygame 窗口。1. 先搞明白 pip 装 pygame 的过程报错才不会瞎猜很多报错看起来吓人其实背后原因就那么几个。想真正解决问题先把 pip 的工作方式弄明白。1.1 pip 到底在做什么pip 是 Python 自带的包管理工具它的工作流程不复杂先根据你给出的包名比如 pygame去 PyPI 仓库查有没有对应的发行文件然后下载到本地再解压安装到 Python 的 site-packages 目录里。关键点在于“对应的发行文件”。pygame 不是纯 Python 代码它底层用了 C 语言写的扩展模块所以想要直接安装成功pip 必须找到适配你操作系统的预编译 wheel 包。正常情况下比如你在 Windows 上用 Python 3.11 装最新版 pygamepip 会直接拉取一个.whl文件安静地装完几秒钟就结束。一旦 pip 找不到合适的 wheel事情就麻烦了它会退而求其次尝试从源码包开始编译。编译 C 扩展需要本机装好编译工具链对新手来说这就是灾难的开始。后面要讲的failed to build pygame报错根源就在这里。1.2 “pip 不是内部或外部命令”这类问题的完整解法热词里有一条特别经典pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。看到这个报错的人通常不是在装 pygame而是连 pip 都用不了。原因基本只有一个你的 Python 不在系统 PATH 环境变量里。Windows 上安装 Python 时安装器第一屏有一个 “Add Python to PATH” 选项很多人没勾选装完就会这样。解决办法我推荐两种。第一种重新去 python.org 下载对应版本的安装包双击运行选择 Modify把 “Add Python to environment variables” 勾上然后走完整个流程。这个方式最省脑子。第二种手动改环境变量把 Python 安装目录和它的 Scripts 子目录都添加到用户 PATH 里。比如 Python 装在C:\Users\你的用户名\AppData\Local\Programs\Python\Python311\那就把这两个路径加进去C:\Users\你的用户名\AppData\Local\Programs\Python\Python311\ C:\Users\你的用户名\AppData\Local\Programs\Python\Python311\Scripts\在 PowerShell 里执行python能进交互模式但pip找不到多半就是 Scripts 目录没加进 PATH。另外我强烈建议新手养成一个习惯不要直接敲pip而是用python -m pip。因为前者调用的是可执行文件后者明确告诉你“我要用当前这个 Python 解释器去执行 pip 模块”能绕开很多环境错位问题。比如python -m pip install pygame1.3 顺手解决 Python 2.7 没有 pip 的旧账热词里还有一条 “python2.7没有pip怎么办”。说实话我不太建议你现在还为 Python 2.7 折腾任何东西。这个版本已经停止维护很多年了pygame 的新版本也早就不支持它。如果是在看很老的教程建议直接把 Python 版本换成 3.8 到 3.12 之间的任意一个稳定版本。学新东西环境干净能省一半的折腾精力。2. 装 pygame 卡在下载阶段配一个国内镜像源排除了 pip 本身的问题接下来最常见的现象是pip 开始下载了然后长时间卡在一个进度条上最后报超时常见的提示里带ReadTimeoutError或者Could not fetch URL。这种情况基本不是 pygame 的锅是下载源的问题。2.1 下载慢的真相pip 默认从位于海外的 PyPI 服务器拉取文件。海外的服务器访问速度本来就不稳定加上包体积大一点很容易超时。pygame 的 wheel 包大概十几 MB 到几十 MB在网速不佳的环境下下载一半断掉是常事。解决思路很简单让 pip 从一个更快的仓库下载。国内很多高校和云服务商都维护有 PyPI 镜像站每天定时同步官方数据速度比直连稳定得多。2.2 临时换源一条命令搞定如果只是这一次安装想快点直接在命令后面加-i参数指定镜像地址就行python -m pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple这条命令的意思是从清华大学的 PyPI 镜像站下载 pygame。装完这一次之后下次再用默认源速度还是原来的样子。临时换源适合应急想一劳永逸就得永久配置。2.3 永久换源一劳永逸的 pip.ini / pip.confpip 支持读取配置文件把镜像地址写进去之后以后所有安装都走这个源。Windows 系统的配置位置比较好记C:\Users\你的用户名\AppData\Local\pip\pip.ini如果这个目录和文件不存在就自己新建。文件内容如下[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host pypi.tuna.tsinghua.edu.cnLinux 和 macOS 的位置是~/.pip/pip.conf或~/.config/pip/pip.conf[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host pypi.tuna.tsinghua.edu.cn配置好之后在命令行里执行python -m pip config list能看到当前配置说明已经生效。之后敲python -m pip install pygame就会自动走国内镜像了。2.4 常用镜像源对照我用过的镜像里下面这几个算是比较稳的镜像地址清华大学 TUNAhttps://pypi.tuna.tsinghua.edu.cn/simple阿里云https://mirrors.aliyun.com/pypi/simple/中科大 USTChttps://pypi.mirrors.ustc.edu.cn/simple/豆瓣https://pypi.douban.com/simple/个人最常用的是清华源原因是同步快、稳定、很少出现 404。如果清华源偶尔抽风把配置改成阿里云或者中科大效果差不多。2.5 换源时最容易踩的小坑换源之后偶尔会遇到一种奇怪现象某个包在镜像源上不存在报 404 或找不到版本。原因是镜像同步有延迟刚发布的新版本还没同步过去或者某些冷门包镜像站压根没存。这种情况有两个办法一是临时切回官方源安装那一个包二是指定一个已有版本安装。千万别把 pip.ini 里的index-url删掉去手动改系统文件层级写错了会影响所有 Python 包的安装。3. pygame 安装报错最全拆解到了真正的重头戏。下面这几个报错我基本都在不同机器上遇到过每一个都能在网上搜到大把求助帖。逐个拆开讲。3.1 failed to build pygame when getting requirements to build wheel这个报错完整版本一般是error: failed to build pygame when getting requirements to build wheel看到这个错误的人第一反应通常是“我的电脑是不是坏掉了”其实不是。前面说过pip 优先安装预编译的 wheel 包。当它找不到适配你系统环境的 wheel 时就会尝试下载源码包然后调用本地的 C 编译器去编译这一步骤要生成一个构建请求如果环境里缺东西就会报出上面这句。换句话说pip 已经放弃了“让你无感安装”的计划转向“源码编译”而编译这条路又走不通。触发这个情况最常见的原因是Python 版本太老或者太新pygame 没有为这个版本提供预编译 wheel。你指定的 pygame 版本太老。平台比较特殊比如 ARM 架构的 Windows 设备或者有些精简系统。解决办法优先级从高到低排第一步升级 pip 本身。pip 太旧会导致很多包解析不正常这也是热词里那句You are using pip version 20.3.1; however, version 25.0.1 is available提示存在的意义。python -m pip install --upgrade pip第二步安装 pygame 时不要指定旧版本直接装最新版python -m pip install pygame如果你之前装了旧版先卸载再装python -m pip uninstall pygame python -m pip install pygame第三步还是不行的话检查 Python 版本。pygame 官方对 Python 3.8 到 3.12 的支持是比较好的装一个这个区间内的稳定版本基本不会再触发源码编译。第四步退而求其次用社区维护的 pygame-ce 替代。pygame-ce 是 pygame 的社区版分支修复了很多老问题wheel 覆盖也更积极python -m pip install pygame-ceimport 的时候依然是import pygame代码不用改。如果你只是做 9×9 三消小游戏完全够用。3.2 Fatal error in launcher: Unable to create process这个报错看起来更吓人全文很像系统级故障Fatal error in launcher: Unable to create process using C:\Users\xxx\AppData\Local\Programs\Python\Python311\python.exe ...实际原因是 pip.exe 这个可执行文件里写死了 Python 解释器的路径而你的 Python 被移动过、升级过或者之前安装残留导致路径对不上了。也就是说pip 这个“启动器”找不到真正的 Python 进程所以罢工了。解决办法用一样走 pip 模块的方式重新升级它把它内部记录的路径刷新一遍。python -m pip install --upgrade --force-reinstall pip如果你连python都打不开那就直接重装对应版本的 Python装的时候选择 Repair 修复模式省事又干净。3.3 权限不足PermissionError 与默认装 C 盘的疑问Windows 下安装包时如果当前用户权限不足可能会看到PermissionError: [Errno 13]说明你没有权限往系统级 site-packages 目录写文件。两个解决方向。一个是在当前用户下安装python -m pip install --user pygame这会把包装进当前用户目录不需要管理员权限。另一个是打开管理员模式的终端再执行命令。如果你用的是虚拟环境基本不会遇到权限问题。顺带解答热词里那条“直接 pip install 是不是默认装 C 盘”。不一定取决于你的 Python 装在哪。Windows 上 Python 大多装在 C 盘那么 site-packages 自然也在 C 盘pip 默认把包塞进对应 Python 版本的 site-packages。如果你用的是 Pycharm 里创建的虚拟环境虚拟环境一般也在项目目录下。不用太纠结装在哪pip 自己管理得好好的怕的是你同时开了多个 Python 环境把包装到了另一个环境里这才是后面要讲的“装完找不到”的根源。3.4 装好了却 import 不到环境错位检查还有一种尴尬情况pip 明明安装成功了代码里import pygame却报ModuleNotFoundError: No module named pygame。这大概率不是 pygame 的问题是环境错位了。你想想命令行里用的是pythonPycharm 的项目解释器用的是它自带的虚拟环境 Python两个根本不是同一个东西。你在命令行里用 pip 装包装进的是系统 Python 的 site-packages而 Pycharm 项目跑起来用的是虚拟环境里的 Python两边不互通自然找不到。验证方法很简单在命令行和 Pycharm 的 Python Console 里分别执行import sys print(sys.executable)如果打印出来的路径不一样说明你确实活在两个平行世界。解决办法也直接在 Pycharm 的 Terminal 面板里执行安装命令这里的终端会自动激活当前项目的虚拟环境装完基本不会出错。3.5 版本提示You are using pip version 老版本看到WARNING: You are using pip version 20.3.1; however, version 25.0.1 is available不用担心它不是错误只是 pip 提醒你版本旧了。旧版本 pip 在新版 Python 上偶尔会出现包解析不兼容的问题升级一下就行python -m pip install --upgrade pip遇到升级超时记得把-i 镜像地址参数加上道理和前面说的一样。4. Windows 实操从零到跑出 pygame 窗口理论讲了半天直接来一遍完整实操。下面的流程我在 Windows 10 和 Windows 11 上都验证过照着做大概率能顺利跑通。4.1 安装前检查环境打开 PowerShell依次执行py --version py -m pip --version第一句查看 Python 版本是否正常第二句确认 pip 能用。如果第一句正常、第二句报错就用py -m ensurepip --upgrade重新装一下 pip。如果第一句就说找不到py回到 1.2 节处理 PATH。检查完之后确保当前 Python 版本在 3.8 到 3.12 之间。4.2 执行安装与日志解读我推荐先换源再安装避免下载超时。临时用一次的话py -m pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple正常情况下终端会打印类似这样的信息Collecting pygame Downloading pygame-2.5.2-cp311-cp311-win_amd64.whl (10.5 MB) Installing collected packages: pygame Successfully installed pygame-2.5.2注意看Downloading后面的文件名里面带win_amd64和cp311说明 pip 找到的是适配 Windows 64 位系统、Python 3.11 的预编译 wheel 包。看到Successfully installed pygame-2.5.2安装就结束了。如果这里卡在Building wheel for pygame (pyproject.toml)说明它没找到 wheel走上源码编译的路了按 3.1 节的办法处理。4.3 验证画一个 9×9 三消棋盘窗口装完先别急着写大逻辑跑一个最小 demo 验证环境。正好你提到要做 9×9 的三消游戏那就直接用 pygame 画一个 9×9 的方格棋盘既验证了安装又给游戏做了第一步。新建一个test_pygame.py内容如下import pygame pygame.init() WIDTH 450 GRID 9 CELL WIDTH // GRID screen pygame.display.set_mode((WIDTH, WIDTH)) pygame.display.set_caption(9x9 三消棋盘) running True while running: for event in pygame.event.get(): if event.type pygame.QUIT: running False screen.fill((30, 30, 30)) for row in range(GRID): for col in range(GRID): rect pygame.Rect(col * CELL, row * CELL, CELL, CELL) pygame.draw.rect(screen, (200, 200, 200), rect, 1) pygame.display.flip() pygame.quit()运行py test_pygame.py如果屏幕上弹出一个 450×450 的窗口里面是一个 9×9 的灰色网格说明 pygame 已经彻底跑通了后面填图片、做点击交换、写消除逻辑都是在这个网格基础上扩展。4.4 做三消游戏新手的建议有个小建议做这种图形小游戏建议把 Python 版本固定下来然后给每个项目单独建虚拟环境不要所有项目共用一套全局 Python。创建虚拟环境很简单在项目目录下执行py -m venv venv然后激活Windows PowerShellvenv\Scripts\Activate.ps1激活之后命令行开头会出现(venv)标识之后再执行 pip 安装所有包都被装进项目里不会污染全局环境也不会因为环境错位导致各种诡异问题。换一台电脑或者过几个月回来看只需要重新创建虚拟环境再装依赖就行。5. 常见问题速查表和排查思路到这里安装阶段能遇到的坑基本都过了。为了方便以后照方抓药我整理了一张速查表遇到问题直接对照排查。5.1 速查表报错信息根本原因解决办法pip 不是内部或外部命令/无法将“pip”项识别为 cmdletPython 未加入 PATH重装时勾选 Add Python to PATH或手动加 Scripts 目录failed to build pygame when getting requirements to build wheel找不到匹配 wheel转入源码编译失败升级 pip安装最新版 pygame换 Python 3.8-3.12换 pygame-ceFatal error in launcher: Unable to create processpip.exe 记录的 Python 路径失效执行python -m pip install --upgrade --force-reinstall pipPermissionError: [Errno 13]无权限写系统目录加--user参数用管理员终端用虚拟环境下载超时 /ReadTimeoutError默认 PyPI 源访问不稳定加-i https://pypi.tuna.tsinghua.edu.cn/simple或永久配置 pip.iniModuleNotFoundError: No module named pygame但安装成功Python 环境错位在项目的虚拟环境终端里重新安装检查sys.executableYou are using pip version 20.3.1 is availablepip 版本过旧执行python -m pip install --upgrade pip5.2 三步定位法遇到新报错别急着复制粘贴搜全文先按这三步做一遍。第一步确认当前用的是哪个 Pythonwhere pythonWindows或者which pythonLinux/macOS。第二步确认这个 Python 的 pip 指向哪里python -m pip --version。第三步只在一个环境里装和运行其他终端全关掉。多数所谓“装上了不能用”的问题走到第三步就自己暴露了。5.3 我的排查经验最后分享一个很实在的经验报错信息再长真正有用的一般就前两行。比如failed to build pygame when getting requirements to build wheel这个错误里你唯一需要关注的是它已经进入 build 阶段了说明 pip 找不到 wheel又比如ModuleNotFoundError重点在前面那句No module named后面的报错细节只是噪音。把报错里最核心的名词拎出来搜比把整段红色文字丢进搜索引擎有效得多。另外安装 pygame 这种带图形界面的库不少人喜欢直接问“是不是没装显卡驱动”这个方向基本是错的。pygame 做 2D 渲染一般不用额外装什么驱动除非你真打算做 3D 模型。装不上就盯着 pip、Python 版本、镜像源这三个层面排查九成问题都出在这里。装 pygame 这件事踩过第一次坑之后就是惯性操作。我个人习惯是固定一套环境组合Python 3.11 加最新版 pygame配合虚拟环境和清华镜像源之后所有 pip 安装几乎不用再折腾。如果你正卡在某个报错上按速查表对着看先解决环境再回来看代码你会发现代码写起来其实挺顺利的。
返回列表