搞游戏开发的都知道,一个项目用 Python 3.7,另一个必须得用 3.9,甚至同一个项目的前后端依赖还不一样。这时候要是只装一个解释器,来回切换、卸载重装,折腾一圈下来,代码没写两行,电脑先崩溃了。
为啥要配多版本环境?
举个例子:你在做一个基于 Pygame 的小游戏,本地跑得好好的,结果交接给队友,对方一运行就报错——原来是用了 3.10 特有的语法,而你的项目要求必须是 3.8。这种“我这儿好好的”问题,根源就是解释器版本不统一。
更常见的是,一些老项目依赖的库只支持旧版 Python,比如某些自动化工具链或内部脚本。你不可能为了新标准把所有老项目重构一遍,所以得让多个版本共存,按需调用。
Windows 上怎么整?
Python 官网下载安装时,默认会关联 .py 文件。但如果你装了多个版本,可以用 Python Launcher 来管理。它自带在 Windows 的 Python 安装包里,通过 py 命令调用。
py -3.7 main.py # 指定用 3.7 运行
py -3.9 main.py # 指定用 3.9
py -c "print('当前版本', __import__('sys').version)"
这样不同项目放在不同文件夹,写个批处理或者文档注明该用哪个命令启动,团队协作也省心。
macOS 和 Linux 用户怎么办?
这类系统推荐用 pyenv。它能让你自由切换全局、局部甚至 shell 级别的 Python 版本。
先装 pyenv(用 Homebrew 或直接克隆):
brew install pyenv # macOS
# 或者
curl https://pyenv.run | bash # 通用安装
装完后列出可用版本:
pyenv install --list
装你需要的几个解释器:
pyenv install 3.8.10
pyenv install 3.9.18
pyenv install 3.10.12
然后在项目根目录执行:
pyenv local 3.8.10
这个命令会在目录下生成 .python-version 文件,以后只要进这个文件夹,自动用 3.8.10。别人拉代码也不用手动问你用哪个版本,一切透明。
配合虚拟环境更香
光有解释器还不够,依赖包也得隔离。比如一个项目用 Pyglet,另一个用 Arcade,混在一起容易出问题。
用 venv 创建独立环境:
python -m venv game_env_38
source game_env_38/bin/activate # Linux/macOS
# 或
game_env_38\\Scripts\\activate # Windows
激活后,pip 安装的所有包都只存在这个环境里。退出用 deactivate 就行。
实际工作流示例
假设你在维护两个游戏项目:
- 《像素跳跃》:基于 Python 3.8 + Pygame 2.0
- 《太空射击》:新项目,用 3.10 + Arcade
你在《像素跳跃》目录下执行:
pyenv local 3.8.10
python -m venv venv
source venv/bin/activate
pip install pygame==2.0
在《太空射击》目录:
pyenv local 3.10.12
python -m venv venv
source venv/bin/activate
pip install arcade
每次打开终端进入项目目录,自动切换版本和依赖,完全不用操心冲突。
IDE 怎么配合?
像 VS Code 这类编辑器,打开项目时会检测当前目录下的虚拟环境。只要看到 venv 文件夹,通常会提示:“检测到 Python 环境,是否使用?” 点确认就行。
如果没自动识别,手动选解释器路径:
# macOS/Linux 示例
./venv/bin/python
# Windows
.\\venv\\Scripts\\python.exe
PyCharm 更省事,新建项目时直接指定解释器路径,后续运行调试全跟着走。