
Python 虚拟环境配置教程:venv、conda、pip 怎么选
适合 Python 新手、AI 工具部署者、数据分析学习者和网站教程发布使用
标题
• Python 环境总是装崩?一篇讲透 venv、conda、pip 怎么选
• 新手必看:Python 虚拟环境配置教程,别再全局 pip install 了
• venv、conda、pip、pipx、uv 到底什么关系?看完一次搞懂
文章摘要
很多 Python 新手第一次装 AI 工具、爬虫脚本、数据分析项目时,最容易卡在“环境”这一步:pip 装了包却 import 不到,conda 建了环境 VS Code 不识别,换一台电脑依赖全部失效。本文用保姆级方式讲清楚 venv、conda、pip、pipx、uv 的定位差异,并给出 Windows、macOS、Linux 通用命令、项目实战流程和常见报错排查树。
| 提示:一句话结论:普通项目默认用 venv + pip;数据科学/AI 训练项目可以用 conda;命令行工具用 pipx;追求速度、锁文件和现代项目管理可以考虑 uv。 |
一、先搞清楚:Python 环境到底在解决什么问题?
Python 项目不像一个孤立的 .py 文件那么简单。只要你安装了 requests、pandas、torch、fastapi、gradio、langchain 等第三方包,就会遇到版本兼容、依赖冲突、系统权限、不同项目互相污染的问题。虚拟环境的价值,就是为每个项目创建一个相对独立的小空间。
| 概念 | 它解决什么问题 | 典型工具 |
| Python 解释器 | 决定代码由哪个 Python 版本执行,例如 Python 3.10、3.11、3.12 | python、py、conda python |
| 虚拟环境 | 让每个项目拥有独立依赖,避免互相污染 | venv、conda、uv venv |
| 包安装器 | 把第三方库安装进当前环境 | pip、conda、uv pip |
| 依赖清单 | 记录项目需要哪些包,方便复现 | requirements.txt、environment.yml、pyproject.toml、uv.lock |
| 命令行工具隔离 | 安装 black、ruff、poetry 等全局命令但不污染项目 | pipx、uv tool |

图:Python 虚拟环境选择流程图
二、快速结论:venv、conda、pip 怎么选?
| 场景 | 推荐方案 | 原因 |
| 普通 Python 脚本、Web 后端、小型 AI Demo | venv + pip | 标准库自带、轻量、学习成本低,是新手最稳路线。 |
| pandas、numpy、scipy、jupyter、机器学习、CUDA 相关依赖 | conda / mamba | 对非 Python 二进制依赖、科学计算库、系统级依赖更友好。 |
| 安装 black、ruff、poetry、cookiecutter、yt-dlp 等命令行工具 | pipx | 每个 CLI 工具独立环境,不污染任何项目。 |
| 团队协作、CI/CD、追求安装速度和锁定依赖 | uv | 速度快,能统一项目、虚拟环境、依赖、工具和锁文件。 |
| 只是在当前环境安装一个包 | pip | pip 是包安装器,不是环境管理器。必须配合 venv/conda 使用。 |

三、venv:新手默认首选的虚拟环境方案
venv 是 Python 标准库自带的虚拟环境工具。只要你安装了官方 Python,通常就可以直接使用。它适合绝大多数普通项目:爬虫、Flask/FastAPI、脚本自动化、AI API 调用、简单模型推理 Demo。
1. 创建项目目录
mkdir my_ai_project
cd my_ai_project
2. 创建虚拟环境
# Windows 推荐
py -m venv .venv
# macOS / Linux 推荐
python3 -m venv .venv
3. 激活虚拟环境
# Windows PowerShell
.venv\Scripts\Activate.ps1
# Windows CMD
.venv\Scripts\activate.bat
# macOS / Linux
source .venv/bin/activate
4. 升级 pip 并安装依赖
python -m pip install –upgrade pip
python -m pip install requests python-dotenv
5. 固化依赖清单
python -m pip freeze > requirements.txt
# 换电脑恢复依赖
python -m pip install -r requirements.txt
| 提示:建议永远使用 python -m pip install 包名,而不是直接 pip install 包名。这样可以确保 pip 对应的是当前解释器,减少“装了但找不到”的问题。 |
四、pip:它是包安装器,不是环境管理器
pip 的职责是把包安装进“当前环境”。当前环境可能是系统 Python、venv、conda,也可能是 VS Code 当前选中的解释器。很多新手的问题,不是 pip 不会装包,而是装进了错误的环境。
| 常用命令 | 作用 |
| python -m pip –version | 查看当前 pip 安装位置,判断它属于哪个 Python。 |
| python -m pip install requests | 安装包。 |
| python -m pip install “fastapi[standard]” | 安装带 extras 的包。 |
| python -m pip install pandas==2.2.3 | 安装指定版本。 |
| python -m pip list | 查看当前环境已安装包。 |
| python -m pip show 包名 | 查看某个包的版本和路径。 |
| python -m pip uninstall 包名 | 卸载包。 |
| python -m pip freeze > requirements.txt | 导出依赖清单。 |
| 避坑:不要在系统 Python 中长期使用全局 pip install。尤其在 Linux 服务器上,系统 Python 常被系统工具依赖,随意修改容易引发权限和系统包冲突。 |
五、conda:更适合数据科学和复杂依赖
conda 同时是环境管理器和包管理器。它不仅能安装 Python 包,也能安装许多非 Python 二进制依赖,因此在 numpy、pandas、scipy、jupyter、机器学习、图像处理、CUDA 相关依赖场景中经常更省心。
| 安装器 | 特点 | 适合人群 |
| Miniconda | 体积小,官方最小化安装器,自己按需装包。 | 想要轻量 conda 的用户。 |
| Anaconda Distribution | 内置大量数据科学包和图形界面 Navigator,体积较大。 | 教学、数据分析入门、希望开箱即用的用户。 |
| Miniforge | 社区维护,默认使用 conda-forge 频道。 | 开源生态、科学计算、希望优先用 conda-forge 的用户。 |
conda 常用命令
# 创建环境
conda create -n ai python=3.12
# 激活环境
conda activate ai
# 安装包
conda install numpy pandas jupyter
# 安装 pip 包(只在当前 conda 环境里使用)
python -m pip install gradio
# 导出环境
conda env export > environment.yml
# 从环境文件恢复
conda env create -f environment.yml
| 提示:conda 和 pip 可以混用,但要有顺序:优先 conda install 能解决的包,再用 pip 安装 conda 没有或版本不合适的包。不要反复交叉安装和卸载,否则依赖解析会变复杂。 |
六、pipx:安装命令行工具的正确姿势
pipx 适合安装“能在终端直接运行的 Python 应用”,例如 black、ruff、poetry、cookiecutter、httpie 等。它会为每个应用单独创建虚拟环境,然后把命令暴露到 PATH 中。
# 安装 pipx
python -m pip install –user pipx
python -m pipx ensurepath
# 用 pipx 安装 CLI 工具
pipx install ruff
pipx install black
pipx install poetry
# 临时运行工具
pipx run cookiecutter gh:audreyfeldroy/cookiecutter-pypackage
| 提示:项目依赖不要用 pipx 安装。比如 requests、pandas、torch 这类库应该装进项目 venv/conda,而不是 pipx。 |
七、uv:更快、更现代的 Python 项目管理方案
uv 是 Astral 推出的现代 Python 工具,目标是把 pip、venv、pip-tools、pipx、poetry、pyenv 等多个流程统一到一个高速工具中。对于新手来说,可以先把它理解为“更快的 venv + pip + lockfile 工作流”。
# 创建虚拟环境
uv venv
# 激活后安装依赖
uv pip install requests fastapi
# 新建项目
uv init my_project
cd my_project
uv add requests
uv run python main.py
# 同步锁文件依赖
uv sync
| 功能 | 传统做法 | uv 做法 |
| 创建虚拟环境 | python -m venv .venv | uv venv |
| 安装依赖 | python -m pip install 包名 | uv pip install 包名 或 uv add 包名 |
| 运行脚本 | 先激活环境,再 python app.py | uv run python app.py |
| 同步团队依赖 | requirements.txt / poetry.lock | uv.lock + uv sync |
| 安装命令行工具 | pipx install 工具名 | uv tool install 工具名 |
八、Windows、macOS、Linux 通用实战流程
方案 A:普通项目,用 venv + pip
mkdir demo_project
cd demo_project
py -m venv .venv # Windows
python3 -m venv .venv # macOS / Linux
.venv\Scripts\Activate.ps1 # Windows PowerShell
source .venv/bin/activate # macOS / Linux
python -m pip install –upgrade pip
python -m pip install requests
python – <<“PY”
import requests
print(requests.__version__)
PY
方案 B:数据分析项目,用 conda
conda create -n data python=3.12
conda activate data
conda install numpy pandas matplotlib jupyter
python -m pip install seaborn
jupyter lab
方案 C:团队项目,用 uv
uv init ai-demo
cd ai-demo
uv add fastapi uvicorn requests
uv run python -c “import fastapi, requests; print(‘ok’)”
uv sync
九、VS Code 中如何选择正确解释器
虚拟环境创建好了,还需要让 IDE 识别到它。VS Code 中最常见的问题是:终端里激活了 .venv,但编辑器右下角或 Python 扩展仍然指向系统 Python。
| 步骤 | 操作 |
| 1 | 安装 VS Code 的 Python 扩展。 |
| 2 | 打开项目文件夹,而不是单独打开某个 .py 文件。 |
| 3 | 按 Ctrl + Shift + P,搜索 Python: Select Interpreter。 |
| 4 | 选择路径中包含 .venv、conda env 名称或项目目录的解释器。 |
| 5 | 在 VS Code 终端执行 python -c “import sys; print(sys.executable)” 验证路径。 |
python -c “import sys; print(sys.executable)”
python -m pip –version
十、AI 项目中应该怎么选环境?
| AI 场景 | 推荐环境 | 说明 |
| 调用 OpenAI、DeepSeek、Gemini 等 API | venv + pip 或 uv | 只需要安装 SDK、requests、dotenv,venv 足够。 |
| 运行 LangChain、LlamaIndex、FastAPI 服务 | venv + pip / uv | 依赖较多,建议固定 requirements.txt 或 uv.lock。 |
| 本地运行 PyTorch 推理 | conda 或 venv + 官方 PyTorch 安装命令 | 关键是匹配 Python、CUDA、torch 版本。 |
| Stable Diffusion / ComfyUI | 项目自带 venv/conda 脚本优先 | 不要随意把依赖装到已有环境里。 |
| Jupyter 数据分析 | conda 更省心 | Notebook、科学计算和可视化库较多。 |
| 部署到服务器或容器 | venv / uv / Docker | 生产环境优先可复现,少手动操作。 |
十一、常见问题排查树

1. pip install 成功,但 import 失败
python -c “import sys; print(sys.executable)”
python -m pip show 包名
python -m pip install 包名
通常是“安装包的 pip”和“运行代码的 Python”不是同一个环境。用 python -m pip 重新安装,并检查 VS Code 解释器。
2. Windows 激活 .venv 报执行策略错误
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
设置后重新打开 PowerShell,再执行 .venv\Scripts\Activate.ps1。
3. Linux 提示 externally-managed-environment
这是系统 Python 的保护机制。不要用 sudo pip install 修改系统环境,应创建 venv 后再安装依赖,或使用系统包管理器安装系统级包。
4. conda solving environment 很慢
建议固定 Python 版本,减少同时安装的包数量;必要时使用 mamba 或从干净环境重新安装。不要在同一个环境中长期反复混用 conda 和 pip。
十二、推荐目录结构
my_project/
├─ .venv/ # 虚拟环境,不提交 Git
├─ src/ # 业务代码
├─ tests/ # 测试代码
├─ .gitignore
├─ requirements.txt # pip 项目依赖清单
├─ pyproject.toml # 现代 Python 项目配置
└─ README.md
推荐 .gitignore
.venv/
__pycache__/
*.pyc
.env
.DS_Store
.idea/
.vscode/
十三、FAQ
Q1:新手到底应该先学 venv 还是 conda?
先学 venv + pip。它是 Python 官方标准库里的基础方案。等你开始做数据科学、AI 训练或复杂科学计算,再补 conda。
Q2:pip 和 conda 能不能混用?
能,但要谨慎。建议先用 conda 安装底层依赖和科学计算包,再用 pip 补充 conda 中没有的包。
Q3:每个项目都要创建一个虚拟环境吗?
建议是的。虚拟环境是可删除、可重建的,不应把多个项目混在同一个环境里。
Q4:requirements.txt 和 environment.yml 有什么区别?
requirements.txt 通常服务于 pip;environment.yml 通常服务于 conda,并可记录 Python 版本、channels 与 conda 包。
Q5:uv 能完全替代 pip 和 conda 吗?
uv 能替代很多 pip/venv/pipx/Poetry 工作流,但 conda 在部分科学计算、系统库和二进制依赖场景仍然有价值。
Q6:为什么不建议全局 pip install?
全局安装会污染系统 Python,多个项目共享依赖容易冲突,Linux 上还可能破坏系统工具依赖。
Q7:VS Code 为什么找不到我刚装的包?
多数是解释器选错。进入命令面板选择 Python: Select Interpreter,选中项目的 .venv 或 conda 环境。
官方参考来源
Python 官方文档:venv — Creation of virtual environments,https://docs.python.org/3/library/venv.html
Python Packaging User Guide:Install packages in a virtual environment using pip and venv,https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/
Python Tutorial:Virtual Environments and Packages,https://docs.python.org/3/tutorial/venv.html
conda 官方文档:Installing conda,https://docs.conda.io/projects/conda/en/stable/user-guide/install/index.html
pipx 官方文档,https://pipx.pypa.io/stable/
uv 官方文档,https://docs.astral.sh/uv/