你是否遇到过这种情况:项目 A 需要 numpy 1.24,项目 B 需要 numpy 1.26;改完一个,另一个就报错?又或者同事说“我这边能跑”,你这边却满屏 ImportError
如果你点头了,这篇文章就是为你写的。

如果你刚开始做 Python 开发,或者已经被“依赖冲突”“环境跑不起来”“换台机器就复现失败”折腾过几次,那么你大概率会需要一个更稳妥的环境管理方案。

我自己的建议是:优先从 Miniconda + Conda 开始,而不是一上来就把所有包装满,或者只靠 pip + venv 硬扛。

这篇文章想解决 4 个问题:

  1. Conda 到底解决了什么问题?
  2. Miniconda 安装完成后,怎么让终端能用上 Conda?
  3. 日常开发里最常用的命令有哪些?
  4. 如果要在项目里调用大模型,Conda 环境该怎么配?

1. Conda 到底是什么

很多人第一次接触 Conda,会把它简单理解成“另一个包管理器”。这样说不算错,但不完整。

Conda 更核心的价值,其实是同时管理“包”和“环境”。

这意味着它不只会装 Python 包,还能处理很多 Python 生态之外的依赖,比如 C/C++ 动态库、部分科学计算库依赖,甚至还能管理不同项目之间互相隔离的运行环境。

这件事在数据分析、机器学习、深度学习场景里尤其重要。因为很多库并不是纯 Python;涉及底层二进制依赖时,排查版本兼容问题的成本可能会比较高。

2. 为什么我更推荐 Miniconda,而不是 Anaconda

Conda 常见的两个入口是 AnacondaMiniconda

  • Anaconda:预装了大量常见科学计算包,装完就能直接用,适合教学演示或想一步到位的人。
  • Miniconda:只保留最基础的 Conda 能力,环境更干净,也更轻量。

如果你是自己长期维护开发环境,我更推荐 Miniconda。原因很简单:

  • 安装体积更小,不会一开始就塞进一大堆你可能根本用不到的包。
  • 环境更可控,需要什么再装什么。
  • 出问题时更容易定位,不容易被预装依赖“污染”。

一句话概括:Anaconda 更像“全家桶”,Miniconda 更像“按需搭建”。

3. 安装 Miniconda 后,先完成一次初始化

可以从 Miniconda 官方安装页面 下载与你的操作系统对应的安装程序。安装时按默认选项完成即可。

安装后,Windows 用户可以直接打开 Miniconda Prompt 使用 Conda;如果希望在 PowerShell 中也能使用,可执行:

conda init powershell

执行后请关闭并重新打开 PowerShell,再运行下面的命令确认安装是否成功:

conda --version

如果能看到 Conda 的版本号,就可以继续了。conda init 会修改 shell 的初始化配置;不想修改 PowerShell 配置的话,始终使用 Miniconda Prompt 也是完全可以的。

4. Conda 最常用的命令

真正开始用 Conda 后,日常高频操作其实就那么几类:创建环境、激活环境、安装包、导出环境。

4.1 创建环境

# 创建一个 Python 3.11 环境
conda create -n myenv python=3.11

# 创建环境时顺手装几个常用包
conda create -n datascience python=3.10 pandas numpy matplotlib

我建议尽量按项目建环境,而不是所有项目共用一个环境。这样后期升级依赖时,你会轻松很多。

4.2 激活和退出环境

conda activate myenv
conda deactivate

激活成功后,终端前面通常会看到 (myenv),这表示当前命令都运行在这个环境里。

4.3 查看本机有哪些环境

conda env list

# 或者
conda info --envs

当前激活的环境前面会带 *

命令输出的最后一列就是环境所在的完整路径。通常不需要手动进入或修改这些目录;记住通过 conda activate 环境名 切换环境即可。

4.4 删除和克隆环境

# 删除环境
conda remove -n myenv --all

# 克隆一个现有环境
conda create -n myenv_test --clone myenv

克隆环境非常适合做实验。比如你想升级某个核心包,又担心把原项目搞坏,先克隆再改会更稳。

4.5 安装、更新、卸载包

# 安装
conda install numpy

# 安装多个包
conda install pandas scikit-learn

# 安装指定版本
conda install numpy=1.26

# 更新
conda update pandas

# 卸载
conda remove numpy

如果某个包在默认 Conda 渠道里没有,或者版本不合适,也可以在 Conda 环境中继续使用 pip。比较稳妥的习惯是:

python -m pip install openai

同一环境中混用 Conda 和 pip 时,建议先用 Conda 安装能找到的核心依赖,再用 pip 补充缺失的包。安装过 pip 包后,尽量避免继续对整个环境做大规模 Conda 更新;需要大幅调整依赖时,重建环境往往更稳妥。

4.6 导出环境,方便复现

这是 Conda 特别实用的一点。

# 导出完整环境
conda env export > environment.yml

# 从文件重建环境
conda env create -f environment.yml

如果你更在意“跨机器可迁移性”,也可以考虑只导出你手动安装过的依赖:

conda env export --from-history > environment.yml

这样生成的文件通常更干净,不容易把平台相关的细节一并带进去。需要注意:它可能不会完整记录通过 pip 安装的包;项目混用 pip 时,最好额外维护 requirements.txt,或在交付前检查 environment.yml 是否包含所需依赖。

5. Conda 和 venv,到底该怎么选

这是很多初学者都会问的问题。我的结论很直接:

  • 如果你做的是 纯 Python 项目、依赖简单、追求轻量venv 完全够用。
  • 如果你做的是 数据分析、机器学习、依赖复杂、需要更强环境隔离 的项目,Conda 往往更省心。

可以简单对比一下:

维度Condavenv
管理对象Python 包 + 非 Python 依赖 + 环境Python 虚拟环境(包通常由 pip 管理)
包管理能力更强,适合复杂依赖venv 本身不管理包,通常配合 pip
上手成本略高,需要先安装 Miniconda/Anaconda更低,Python 自带
适合场景数据科学、机器学习、多环境项目轻量 Web 项目、脚本项目

所以不要把它们理解成“谁替代谁”,而是把它们看成两个针对不同场景的工具。

6. 一个实际例子:在 Conda 环境里调用大语言模型

如果你正在做 AI 相关开发,一个很常见的需求就是:给项目单独建一个环境,只安装模型调用需要的依赖。

下面用一个简单例子演示。这里以 qwen-plus 为例,并通过兼容 OpenAI SDK 的接口调用;其他提供 OpenAI 兼容接口的模型服务,调用思路也基本类似。

第一步:创建并激活环境

conda create -n llm_env python=3.11
conda activate llm_env

第二步:安装依赖

python -m pip install openai

第三步:配置环境变量

如果你使用的是 PowerShell,可以这样设置当前会话的环境变量:

$env:DASHSCOPE_API_KEY="sk-xxx"
$env:DASHSCOPE_WORKSPACE_ID="你的工作空间 ID"

本文示例使用北京地域的百炼工作空间;请将 你的工作空间 ID 替换为实际值。如果你已经提前配置过这两个系统环境变量,这一步可以跳过。其他地域的接口地址请以百炼 OpenAI 兼容接口文档为准。

不要把真实 API Key 写进代码、截图或提交到 Git 仓库。本文中的 sk-xxx 只是占位符。

第四步:编写测试代码

import os
from openai import OpenAI

workspace_id = os.environ["DASHSCOPE_WORKSPACE_ID"]

client = OpenAI(
    api_key=os.environ["DASHSCOPE_API_KEY"],
    # 北京地域的百炼 OpenAI 兼容接口地址
    base_url=f"https://{workspace_id}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen-plus",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "你是谁?"},
    ],
)

print(completion.choices[0].message.content)

第五步:运行

python test_llm.py

这样做的好处是很明确的:

  • 大模型调用相关依赖不会污染你其他项目的环境。
  • 后续要升级 SDK 或切换接口时,影响范围可控。
  • 需要分享给别人时,可以直接把 environment.yml 一起交出去。

7. 我对 Conda 的一个实际建议

如果你准备长期写 Python,我很建议尽早养成下面这几个习惯:

  • 一个项目一个环境。
  • 不要长期把所有工作都堆在 base 环境里。
  • 重要项目记得导出 environment.yml
  • 能用 Conda 安装的核心依赖优先用 Conda,缺失的再补 pip

这些习惯看起来不起眼,但它们会直接决定你半年后维护项目时是轻松还是崩溃。

总结

Conda 最大的价值,不只是“能装包”,而是它帮你把 Python 项目的运行环境变得更清晰、更隔离、更可复现。

如果你只是偶尔写几个小脚本,venv 可能已经足够;但如果你开始接触多项目开发、数据分析、机器学习,或者任何依赖稍微复杂一点的场景,Conda 基本都会让你省下很多排错时间。

如果要我给一个简单建议,那就是:

新手先装 Miniconda,学会按项目建环境,再慢慢补包管理经验。


如果这篇文章帮你理清了 Python 环境管理的思路,欢迎点赞、收藏。

你在使用 Conda 或 venv 时还遇到过哪些坑?欢迎在评论区交流;后续我也会继续整理 Python 开发中的实战经验。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐