AI开发环境实战:从零搭建Python虚拟环境(macOS & Windows)
1. 为什么AI开发的第一步是“隔离”环境?
如果你刚开始接触AI项目,或者准备从数据分析、Web开发转向大模型应用,你可能会遇到一个非常头疼的问题:昨天还能跑的代码,今天装了个新库就报错了。或者,你跟着一个教程安装了一堆包,结果把另一个项目搞得一团糟。这种“依赖地狱”在Python开发里太常见了,尤其是AI领域,各种框架(PyTorch, TensorFlow, Transformers)版本迭代快,对CUDA、Python版本的要求又各不相同。
我自己就踩过不少坑。曾经为了跑通一个基于旧版PyTorch的模型,不得不把系统里好几个项目的环境都搞乱了,最后花了一下午时间重装。所以,我现在的习惯是:每个项目,无论大小,都必须在独立的虚拟环境里进行。这就像给你的每个项目分配一个专属的、干净的“工作间”,里面只放这个项目需要的工具和材料,互不干扰。
虚拟环境的核心价值就是隔离。它能做到:
- 依赖隔离:项目A用PyTorch 1.13,项目B用PyTorch 2.0,它们可以和平共处,不会打架。
- Python版本隔离:有些老项目可能还跑在Python 3.8上,而新特性需要Python 3.11,虚拟环境可以让你在同一台机器上轻松切换。
- 环境纯净:避免了因为全局安装过多包导致的潜在冲突,也让
pip list的结果清爽无比,一眼就知道当前项目用了什么。
对于AI开发来说,这种隔离尤为重要。我们经常需要尝试不同的模型库、不同的优化器,甚至自己魔改一些底层代码。一个独立的环境意味着你可以大胆实验,搞砸了删掉这个环境重来就行,完全不会影响其他工作。所以,别再犹豫了,从你下一个AI实验开始,就养成使用虚拟环境的好习惯。
2. 环境基石:双平台安装Python与Git
工欲善其事,必先利其器。在搭建虚拟环境之前,我们需要确保系统里已经安装了Python和Git。Python是我们的编程语言,而Git不仅是代码版本管理的标配,很多现代Python工具链(比如我们后面要用的uv)也依赖它来获取包。
2.1 macOS:用Homebrew一键搞定
macOS系统自带Python,但通常是较旧的Python 2.7或一个系统级的Python 3。我们强烈建议不要动系统自带的Python,而是通过包管理器Homebrew来安装和管理我们自己的Python版本。Homebrew是macOS上的“软件商店命令行版”,能让你优雅地安装、更新和卸载成千上万的开发工具。
首先,打开你的“终端”应用。检查是否已经安装了Homebrew:
brew --version
如果显示了版本号(比如Homebrew 4.x.x),恭喜,你可以跳过了。如果没有,那就需要安装。安装命令是一行脚本,它会从GitHub拉取安装程序:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装过程中可能会提示你安装Xcode Command Line Tools,按提示确认即可。安装完成后,可能还需要按照终端的提示,将Homebrew的可执行文件路径添加到你的shell配置文件(如~/.zshrc)中。
有了Homebrew,安装Python 3就简单得不能再简单了:
brew install python
这条命令会安装最新稳定版的Python 3,并且自动关联好pip(Python包安装工具)。安装完成后,验证一下:
python3 --version
# 输出类似:Python 3.11.5
pip3 --version
# 输出类似:pip 23.2.1 from ...
注意,在macOS上,通过Homebrew安装的Python 3命令通常是python3和pip3,这是为了和系统自带的Python 2区分开。
2.2 Windows:官方安装器与PATH配置
在Windows上,我们直接去Python官网下载安装程序是最直接的方式。打开浏览器,访问 python.org,进入“Downloads”页面,你会看到一个醒目的大按钮推荐你下载最新版的Windows安装程序(一个.exe文件)。
下载后运行它,有一个步骤至关重要:在安装向导的第一个界面,务必勾选最下方的 “Add python.exe to PATH”。这个选项会把Python和pip的可执行文件目录添加到系统的环境变量PATH中。只有这样,你才能在命令提示符或PowerShell的任何位置直接输入python或pip来调用它们。如果不勾选,后续使用会非常麻烦,你可能需要手动去配置环境变量。
勾选后,点击“Install Now”进行标准安装即可。安装完成后,我们需要验证。按下 Win + R 键,输入 cmd 打开命令提示符,或者右键开始菜单选择“Windows PowerShell”,然后输入:
python --version
# 输出类似:Python 3.11.5
pip --version
# 输出类似:pip 23.2.1 from ...
如果看到版本号,说明安装和PATH配置都成功了。如果提示“python不是内部或外部命令”,说明PATH没有正确添加,你可能需要卸载后重装,或者手动去系统属性里添加环境变量。
2.3 Git安装:代码管理的必备工具
Git的安装同样简单。在macOS上,如果你已经装了Homebrew,一行命令搞定:
brew install git
在Windows上,同样访问Git官网 (git-scm.com) 下载安装程序。安装过程基本一路“Next”即可,唯一要注意的是在“Adjusting your PATH environment”这一步,建议选择 “Git from the command line and also from 3rd-party software”,这也会把Git添加到你的PATH。安装完成后,在终端或命令行里输入 git --version 验证。
3. 新一代神器:为什么选择uv管理虚拟环境?
传统上,Python开发者创建虚拟环境会用到内置的venv模块或者第三方工具virtualenv,然后用pip来安装包。这个组合没问题,但在AI开发这种动辄需要安装几十上百个依赖、且依赖包体积巨大的场景下,速度就成了痛点。pip安装Torch或者TensorFlow的时候,那种等待编译或者缓慢下载的感觉实在不太好。
这就是我推荐你试试 uv 的原因。uv是一个用Rust写的、极其快速的Python包安装器和解析器,同时它也集成了虚拟环境管理功能。你可以把它理解为 pip + virtualenv + pip-tools 的超高速集成版。我实测下来的感受就是:快,非常快。尤其是解决依赖关系和下载安装环节,速度提升非常明显,对于需要频繁创建环境、安装重型AI库的我们来说,效率提升是实实在在的。
它的优势很明显:
- 闪电般的速度:依赖解析和包安装比传统
pip快一个数量级。 - 一体化:一个工具搞定虚拟环境创建、依赖安装、锁定文件生成。
- 兼容性好:它生成的虚拟环境是标准格式,和
venv、virtualenv兼容,你仍然可以用传统的activate命令激活。 - 对AI友好:预编译了PyTorch、TensorFlow等科学计算库的二进制轮子,安装时无需从源码编译,省时省力。
安装uv非常简单,因为它本身就是一个Python包。无论macOS还是Windows,在确保pip可用的前提下,打开你的终端或命令行,输入:
pip install uv
安装完成后,用 uv --version 检查一下。如果安装成功,你就可以和缓慢的旧时代说再见了。
4. 实战:用uv创建并管理你的第一个AI项目环境
现在,让我们动手,为一个假设的AI项目(比如一个使用Hugging Face Transformers的文本分类项目)搭建专属环境。我会把每一步的细节和可能遇到的问题都讲清楚。
4.1 创建项目目录与虚拟环境
首先,为你心爱的项目找个地方,并进入这个目录。我在桌面上创建一个叫my-ai-project的文件夹作为示例。
# macOS / Windows (PowerShell或命令提示符路径语法通用)
cd ~/Desktop
mkdir my-ai-project
cd my-ai-project
接下来,使用uv创建虚拟环境。关键决策来了:指定Python版本。虽然uv会自动使用你系统默认的Python版本,但我强烈建议显式指定。因为你的项目代码可能会依赖特定Python版本的特性。比如,你想用Python 3.11的tomllib库,或者某些AI库对3.10以上版本优化更好。
uv venv --python 3.11
这行命令做了几件事:
uv venv:告诉uv要创建一个虚拟环境。--python 3.11:指定使用Python 3.11。如果系统里没有这个版本,uv会尝试帮你下载(需要python.org支持)。你也可以写3.9、3.10等。- 默认情况下,它会在当前目录下创建一个名为
.venv的文件夹,里面包含了独立的Python解释器和pip。
执行成功后,你会看到目录里多了一个.venv文件夹(在macOS的Finder或Windows资源管理器里可能是隐藏的,因为点号开头)。这个文件夹就是你的虚拟环境本体,千万不要把它提交到Git仓库里!记得把它加到你的.gitignore文件。
4.2 激活环境:进入你的专属工作间
创建好环境后,你需要“进入”这个环境。这个过程叫做“激活”。激活后,你的命令行提示符通常会发生变化(前面会多出(.venv)字样),更重要的是,此时你输入的python、pip命令,都只会作用于这个.venv环境内部,与系统全局环境完全隔离。
激活命令因操作系统和Shell而异,这是新手最容易搞混的地方:
- macOS 和 Linux (通常使用 bash 或 zsh):
source .venv/bin/activate - Windows 命令提示符 (CMD):
.venv\Scripts\activate.bat - Windows PowerShell:
在PowerShell中执行脚本可能会遇到执行策略限制,如果报错,可以先用管理员权限运行.\.venv\Scripts\Activate.ps1Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser更改策略(更安全),或者简单点,在VSCode等集成终端里操作,它们通常处理好了。
激活后,注意看你的命令行开头,是不是变成了类似这样:
(.venv) user@MacBook-Pro my-ai-project %
或者
(.venv) PS C:\Users\user\Desktop\my-ai-project>
这个(.venv)就是激活成功的黄金标志!现在,输入 python --version 和 pip --version,它们指向的都是你.venv里的版本。
4.3 安装AI项目依赖:体验uv的速度
环境激活了,现在来安装我们项目需要的包。假设我们需要torch、transformers和datasets。传统方式是pip install torch transformers datasets。但既然用了uv,我们就用它的安装命令,体验一下飞一般的感觉。
方法一:使用 uv pip install 这是最接近原pip体验的方式,但底层是uv的引擎在跑。
uv pip install torch transformers datasets
你会看到依赖解析的速度非常快,下载和安装环节也能感受到加速,特别是对于torch这种大包,uv会优先选择最适合你系统的预编译二进制文件。
方法二:使用 uv add 并配合 pyproject.toml (推荐) 这是更现代、更规范的做法。我们先创建一个pyproject.toml文件,这是现在Python项目声明依赖和配置的标准文件。
# 首先,如果还没有pyproject.toml,uv add会帮你创建一个
uv add torch transformers datasets
这条命令会做两件事:1. 将这三个包安装到当前虚拟环境。2. 将它们作为依赖项写入(或更新)pyproject.toml文件。你可以打开这个文件看看,依赖被清晰地记录了下来。这种方式的好处是,你明确地声明了项目依赖,别人拿到你的项目,只需要一个uv install命令(后面会讲)就能复原完全相同的环境。
安装完成后,用 uv pip list 或 pip list 看看,是不是只有你刚装的这几个包?非常干净。
4.4 依赖锁定与环境复现
在AI项目中,确保实验结果可复现至关重要。今天用transformers==4.30.0跑出的效果,明天如果自动升级到4.31.0,结果可能就有细微差别。所以,我们需要“锁定”所有依赖的确切版本。
这就是uv lock命令的用武之地。当你有了pyproject.toml后,运行:
uv lock
这个命令会解析pyproject.toml里的所有依赖(包括间接依赖,即依赖的依赖),计算出一组完全兼容的、精确到每个版本号的包列表,然后生成一个 uv.lock 文件。这个锁文件记录了当前环境下所有包的确切版本和哈希值。
这个uv.lock文件一定要提交到Git仓库! 当你的合作者克隆了项目,或者你在另一台机器上需要搭建环境时,只需要两个命令:
uv venv --python 3.11 # 创建虚拟环境
uv sync # 根据uv.lock文件,安装完全一致的依赖
uv sync会严格按照uv.lock文件来安装,确保环境百分之百一致。这才是真正可靠的依赖管理和项目协作方式。
4.5 退出与删除环境
当你完成当前项目的工作,想切换回系统全局环境或者去处理另一个项目时,需要退出当前虚拟环境。命令很简单,在任何平台都一样:
deactivate
执行后,命令行前的(.venv)提示符会消失,python和pip命令又回到了全局模式。
如果你某个项目彻底完结,或者环境被玩坏了想重来,直接删除项目目录下的.venv文件夹即可。在macOS终端或Windows PowerShell中,可以在项目目录下执行:
# 注意:这个操作不可逆!确保你已退出环境。
rm -rf .venv # macOS/Linux
# 或
Remove-Item -Recurse -Force .venv # Windows PowerShell
删掉后,你就可以按照之前的步骤,用uv venv创建一个全新的、干净的环境了。
5. 避坑指南与高效工作流
掌握了基本操作,再来分享几个我实践中总结的窍门和常见问题的解决办法,能让你少走很多弯路。
坑点一:VSCode识别虚拟环境 很多朋友在VSCode里打开项目,发现代码提示和运行还是用的系统Python。你需要告诉VSCode使用项目里的.venv。按下 Cmd+Shift+P (macOS) 或 Ctrl+Shift+P (Windows),输入“Python: Select Interpreter”,然后选择路径为./.venv/bin/python (macOS) 或 ./.venv/Scripts/python.exe (Windows) 的解释器。选对之后,VSCode左下角会显示当前使用的Python环境。
坑点二:不同终端的环境状态独立 你在PowerShell里激活了环境,然后新开一个标签页或者一个CMD窗口,这个新窗口的环境是未激活的。虚拟环境的激活状态是“会话级”的,只对当前那个终端窗口有效。所以,养成习惯,每次在新窗口工作,先cd到项目目录,再执行激活命令。
高效工作流建议:
- 一项目一环境:铁律,不要违背。
- 依赖声明标准化:坚持使用
pyproject.toml来声明直接依赖,用uv add [package]来安装和记录。 - 锁文件必提交:
uv.lock是保证复现性的关键,务必加入版本控制。 - 使用
uv sync:在新环境搭建时,优先使用uv sync而不是手动pip install,确保依赖树一致。 - 定期更新依赖:可以定期运行
uv pip list --outdated查看过时的包,然后用uv add [package]@latest来更新并同步到pyproject.toml和uv.lock。
最后,关于uv,它还在快速发展中,但核心的虚拟环境和包安装功能已经非常稳定可靠。对于AI开发这种对效率和环境隔离要求极高的场景,它带来的体验提升是实实在在的。从今天开始,试着用uv来管理你的下一个AI项目环境吧,那种快速和清爽的感觉,会让你再也回不去的。
更多推荐


所有评论(0)