怎么在Python虚拟环境(venv)中隔离安装pygame

听雨眠
听雨眠
发布时间:2026-11-03| 8人浏览过
原创

详细讲解如何使用Python内置的venv模块创建虚拟环境,并在其中隔离安装pygame,包括操作步骤、验证方法和常见问题排查。

用Python的venv模块创建一个独立的虚拟环境,在里面用pip install pygame安装——这样pygame和它的依赖只存在于该环境中,不会影响系统Python,也不会和其他项目的库产生版本冲突。下面从创建环境到验证安装,完整走一遍这个过程。

为什么要用虚拟环境安装pygame

直接在系统Python里pip install pygame,pygame会装进全局site-packages。如果你同时开发几个项目,一个需要pygame 2.1,另一个需要pygame 2.5,全局安装只能保留一个版本,升级或降级都会影响其他项目。更麻烦的是,有些Linux发行版的系统Python承担着包管理器的职责,往里面装第三方库可能破坏系统工具。

虚拟环境的作用就是给每个项目创建一份独立的Python运行环境。它在你指定的目录下生成一个包含python解释器副本(实际是符号链接)和独立site-packages的文件夹。激活这个环境后,pip install的所有包都只写入这个文件夹,python命令也只能看到这里的包。退出环境或者删掉这个文件夹,一切就恢复原样。

Python 3.3以后内置了venv模块,不需要额外安装virtualenv之类的第三方工具。下面的操作全部使用venv。

怎么在Python虚拟环境(venv)中隔离安装pygame
图1:全局安装与虚拟环境隔离安装的对比

准备工作

在创建虚拟环境之前,确认两件事:

1. 确认Python版本。打开终端(Windows上是命令提示符或PowerShell),输入:

python3 --version

看到类似Python 3.10.12的输出就行。pygame目前支持Python 3.6到3.12,建议使用3.8以上版本。如果系统没装Python 3,去python.org下载安装。Windows用户注意安装时勾选"Add Python to PATH"。

2. 确认venv模块可用。正常安装的Python 3.3+都自带venv。但在某些Debian/Ubuntu系统上,venv被拆分到了单独的包里,需要手动安装:

# 如果 python3 -m venv 报错"No module named venv",执行这行
sudo apt install python3-venv

macOS和Windows上不需要这一步。

创建虚拟环境

先进入你打算放项目的目录,然后执行python3 -m venv命令。后面跟的参数是虚拟环境文件夹的名字,习惯上用venv或.venv:

# 进入项目目录
cd ~/my-pygame-project

# 创建虚拟环境,文件夹名为 venv
python3 -m venv venv

这条命令会在当前目录下生成一个venv文件夹,里面包含:

  • bin/(Windows上是Scripts/)——存放该环境的python和pip等可执行文件
  • lib/pythonX.Y/site-packages/——该环境独立的第三方包存放位置
  • pyvenv.cfg——记录基础Python路径等配置信息

Windows用户把命令中的python3换成python(Windows安装的Python 3通常注册为python而非python3):

python -m venv venv

激活虚拟环境

创建完虚拟环境,还需要"激活"它。激活的作用是修改当前终端的PATH,让python和pip命令指向虚拟环境里的版本。

不同操作系统的激活命令不同:

# Linux / macOS(bash / zsh)
source venv/bin/activate

# Windows 命令提示符(CMD)
venv\Scripts\activate.bat

# Windows PowerShell
venv\Scripts\Activate.ps1

激活成功后,终端提示符前面会出现(venv)标记,类似这样:

(venv) user@host:~/my-pygame-project$

这个标记表示当前终端正在使用虚拟环境中的Python。可以用which python(Windows用where python)确认一下,输出路径应该指向项目目录下的venv/bin/python,而不是系统的/usr/bin/python3。

注意:如果你在Windows PowerShell中遇到"无法加载……因为在此系统上禁止运行脚本"的错误,需要先执行Set-ExecutionPolicy -Scope CurrentUser RemoteSigned来允许运行本地脚本。

在虚拟环境中安装pygame

确认(venv)标记出现后,直接用pip安装:

pip install pygame

pip会从PyPI下载pygame及其依赖并安装到虚拟环境的site-packages中。安装过程的输出大致如下(版本号可能不同):

# 示例输出
Collecting pygame
  Downloading pygame-2.6.1-cp311-cp311-manylinux_2_17_x86_64.whl (13.4 MB)
Installing collected packages: pygame
Successfully installed pygame-2.6.1

如果需要安装特定版本,在包名后面加版本号:

# 安装指定版本
pip install pygame==2.5.2

安装完成后,可以用pip list查看当前虚拟环境中已安装的包:

pip list

列表中应该只有pip、setuptools和刚装的pygame,不会出现系统Python里的其他包——这就是隔离的效果。

怎么在Python虚拟环境(venv)中隔离安装pygame
图2:创建虚拟环境并安装pygame的操作步骤与目录结构

验证安装是否成功

在已激活的虚拟环境中,运行一段简短的Python代码确认pygame可以正常导入和初始化:

python -c "import pygame; pygame.init(); print(pygame.ver)"

如果输出了版本号(如2.6.1),说明安装成功。你也可以跑一个更直观的测试——打开一个空白窗口确认图形功能正常:

python -c "
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 300))
pygame.display.set_caption('venv pygame test')
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    screen.fill((250, 250, 247))
    pygame.display.flip()
pygame.quit()
"

如果弹出了一个标题为"venv pygame test"的窗口,关闭后程序正常退出,说明pygame在虚拟环境中工作正常。

接下来退出虚拟环境,再试一次import pygame,验证隔离效果:

# 退出虚拟环境
deactivate

# 此时用系统Python导入pygame应该报错
python3 -c "import pygame"

预期会看到ModuleNotFoundError: No module named 'pygame'——这正好说明pygame只安装在虚拟环境里,系统Python没有受到影响。

日常使用中的几个要点

每次开新终端都要重新激活。虚拟环境的激活只对当前终端会话有效。关掉终端或开一个新窗口,需要重新source venv/bin/activate,否则python和pip指向的是系统版本。

用requirements.txt记录依赖。安装完需要的包之后,执行pip freeze > requirements.txt把当前环境中的包和版本号导出到文件。下次在新机器上重建环境时,只需要:

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

这样就能精确复现相同的依赖版本。

不要把venv文件夹提交到版本控制。虚拟环境的文件夹通常有几十MB,而且其中的二进制文件与操作系统相关,换台机器就无法使用。在.gitignore中加一行venv/,只提交requirements.txt就够了。

删除环境很简单。不需要这个虚拟环境了,直接删掉文件夹即可:

rm -rf venv

这不会影响系统Python和其他项目的环境。

怎么在Python虚拟环境(venv)中隔离安装pygame
图3:使用虚拟环境的日常工作流程

常见问题排查

pip install pygame时提示"No matching distribution found"。这通常意味着当前Python版本还没有对应的pygame预编译包。检查Python版本是否在pygame支持范围内。如果你刚安装了最新的Python(如3.13),可能pygame还没来得及发布对应的wheel,可以先回退到上一个稳定版本的Python。

安装成功但import报错"No module named pygame"。最常见的原因是终端没有激活虚拟环境,或者你用的python命令和pip命令指向了不同的Python。在虚拟环境中,始终用pip(而非pip3或带绝对路径的pip)来安装,用python(而非python3或系统路径的python)来运行,这样能保证两者指向同一个环境。也可以用更可靠的写法:

python -m pip install pygame

这样pip一定跟着当前的python走。

Linux上安装报错缺少SDL依赖。pygame底层依赖SDL2图形库。在大多数系统上,pip安装pygame时会直接使用预编译的wheel,不需要手动装SDL。但如果你的系统架构比较特殊(比如ARM上的某些Linux发行版),可能需要从源码编译,这时需要先安装SDL2的开发包:

# Debian / Ubuntu
sudo apt install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev

# Fedora
sudo dnf install SDL2-devel SDL2_image-devel SDL2_mixer-devel SDL2_ttf-devel

安装完这些依赖之后再执行pip install pygame。

IDE识别不到pygame。VS Code、PyCharm等IDE需要配置为使用虚拟环境的Python解释器。在VS Code中,按Ctrl+Shift+P选择"Python: Select Interpreter",然后选到venv/bin/python。PyCharm在Settings → Project → Python Interpreter中添加已有的虚拟环境。配置正确后,代码补全和报错检查就能识别pygame了。

怎么在Python虚拟环境(venv)中隔离安装pygame
图4:在虚拟环境中安装pygame的常见问题及解决方法

完整操作小结

把前面的步骤串起来,从零开始在虚拟环境中安装pygame只需要这几条命令:

# 1. 进入项目目录(没有就先创建)
mkdir -p ~/my-pygame-project && cd ~/my-pygame-project

# 2. 创建虚拟环境
python3 -m venv venv

# 3. 激活虚拟环境
source venv/bin/activate    # Windows: venv\Scripts\activate

# 4. 安装 pygame
pip install pygame

# 5. 验证
python -c "import pygame; print(pygame.ver)"

# 6. 导出依赖(可选但推荐)
pip freeze > requirements.txt

# 7. 完成后退出虚拟环境
deactivate

虚拟环境最大的好处是简单、可预测:每个项目的依赖关系清清楚楚,安装和清理都不影响系统环境。pygame装在venv里,和装在全局没有任何功能差异,窗口、声音、图形渲染全部正常工作。养成为每个项目创建独立虚拟环境的习惯,可以避免很多后续依赖管理上的麻烦。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。