conda常用命令&pip、venv

文章目录

常用命令

类别 命令 说明 示例
环境管理 conda create -n myenv 创建新环境 conda create -n myproject python=3.9
conda activate myenv 激活进入某个环境 conda activate myproject
conda deactivate 退出当前环境 conda deactivate
conda env list 列出所有已创建的环境 conda env list
conda remove -n myenv --all 删除整个环境 conda remove -n oldproject --all
conda create -n new_env --clone old_env 克隆一个现有环境 conda create -n proj_backup --clone myproject
包管理 conda install numpy 在当前环境安装 conda install pandas matplotlib
conda install numpy=1.21 安装指定版本的包 conda install tensorflow=2.10
conda list 列出当前环境所有已安装的包 conda list
conda update numpy 更新某个包 conda update scikit-learn
conda update --all 更新当前环境所有 conda update --all
conda remove numpy 从当前环境卸载一个包 conda remove scrapy
conda search tensorflow 搜索包,查看可用版本 conda search pytorch
频道管理 conda install -c conda-forge package 特定频道安装包 conda install -c conda-forge opencv
conda config --add channels url 添加频道 conda config --add channels conda-forge
conda config --show channels 显示当前配置的频道 conda config --show channels
导入导出 conda env export > environment.yml 导出当前环境到文件 conda env export > environment.yml
conda env create -f environment.yml 根据文件创建环境 conda env create -f environment.yml

其他命令

表格中的命令足以应对大部分场景,但掌握下面几个技巧能让你的工作流更加顺畅:

  • 使用 conda-forge 频道:这是一个社区驱动的频道,包版本通常更新、更全。建议将其设置为最高优先级。

    bash 复制代码
    conda config --add channels conda-forge
    conda config --set channel_priority strict
  • 导出精准的环境文件 :直接使用 conda env export 导出的环境文件会包含大量底层依赖,可能不利于跨平台复用。推荐使用 --from-history 参数,它只导出你明确安装的包,使得环境文件更简洁。

    bash 复制代码
    conda env export --from-history > environment.yml
  • 与 Pip 协同工作 :如果某个包在 Conda 中找不到,可以在 Conda 环境中使用 Pip 安装。但为了减少依赖冲突,最好遵循 "先Conda,后Pip" 的原则。

    bash 复制代码
    conda install numpy pip  # 先通过conda安装
    pip install some-package-not-in-conda  # 再用pip安装
  • 清理缓存以释放空间:定期清理Conda的缓存包是个好习惯。

    bash 复制代码
    conda clean --all

其他

conda国内镜像

若下载速度慢,可修改 Conda 配置文件 .condarc,添加清华镜像源加速:

yaml 复制代码
channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  nvidia: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

修改后重启终端,安装命令不变,下载速度可提升 3-5 倍。

Conda & pip

关键原则 推荐做法 需要避免的情况
使用顺序 先使用 Conda 安装尽可能多的包,再使用 Pip 安装 Conda 中没有的包 不要在同一个环境里频繁交替、随机使用 Conda 和 Pip
环境隔离 为需要混用 Conda 和 Pip 的项目创建独立的虚拟环境 避免在 Anaconda/Miniconda 的 base 基础环境中使用 Pip
Pip 配置 保持 Pip 的默认升级策略 --upgrade-strategy only-if-needed 不要使用 pip --user 在用户目录安装包
环境重建 如果后续需要安装新的 Conda 包,考虑重新创建环境,因为 Conda 可能无法完全感知 Pip 安装带来的变更 不要在一个"混乱"的环境里反复修补

使用原则:

  • 顺序是关键 :像调制鸡尾酒一样,先 Conda,后 Pip。这个顺序能最大程度减少混乱。
  • 隔离是保障 :为每个项目创建独立的虚拟环境,这是混用 Conda 和 Pip 时的安全实验场。
  • 重建好过修补 :当环境因后续安装变得复杂时,重新创建环境往往比花费大量时间排查依赖冲突更高效。
  1. 恪守「Conda优先」的使用顺序
  • 为什么? Conda 和 Pip 处理依赖关系的方式有根本不同。Conda 在安装包时会使用一个"求解器"来验证环境中所有包的依赖关系是否都能同时满足,这有助于创建一个稳定的环境。而 Pip 是按顺序安装依赖的,这可能导致后来安装的包破坏先前包的依赖。
  • 怎么做? 首先尝试用 Conda(包括 conda-forge 等社区频道)安装你需要的包。只有当 Conda 无法提供某个包时,再求助于 Pip。
  1. 创建专用的虚拟环境
  • 为什么? 将可能出现的依赖冲突隔离在项目专用的环境中,不会影响其他项目或基础的 Conda 环境。这样即使环境损坏,也可以轻松删除重建。

  • 怎么做?

    bash 复制代码
    # 创建新环境并指定Python版本
    conda create -n my_project python=3.9
    conda activate my_project

    在此之后,再在这个 my_project 环境里遵循「Conda优先」的原则安装包。

  1. 确保使用环境内的 Pip
  • 为什么? 系统可能存在多个 Pip,如果误用了环境外的 Pip,包会被安装到错误的位置,导致环境混乱。

  • 怎么做? 激活环境后,使用 which pip(Linux/macOS)或 where pip(Windows)命令检查,确保输出的路径包含当前环境名,如 .../envs/my_project/bin/pip
    一个更稳妥的方法是使用 Python 模块方式运行 Pip:

    bash 复制代码
    python -m pip install <包名>

    这种方式能确保使用的是当前环境下的 Python 对应的 Pip。

  1. 使用环境文件重现环境
  • 为什么? 为了确保你的项目环境(包括所有依赖)能被你本人或他人准确复现,最好将环境导出为文件。
  • 怎么做?
    1. 导出既包含 Conda 包也包含 Pip 包的环境文件:

      bash 复制代码
      conda env export > environment.yml

      导出的 environment.yml 文件会列出所有包及其精确版本,包括通过 Pip 安装的包。

    2. 其他人拿到这个文件后,可以一键创建相同的环境:

      bash 复制代码
      conda env create -f environment.yml

Python venv

venv 是 Python 官方推荐的环境管理工具,从 Python 3.3 开始成为标准库的一部分。它的核心思想是创建一个轻量级的、独立的 Python 环境 ,这个环境拥有自己的 python 解释器、pip 安装工具和独立的第三方包安装目录。

核心命令与步骤
步骤 命令 说明
1. 创建环境 python -m venv /path/to/new/virtual/environment 创建一个新的虚拟环境。通常命名为 venv.venv
2. 激活环境 Windows (CMD/PowerShell): venv\Scripts\activate macOS / Linux (Bash): source venv/bin/activate 激活环境后,命令行提示符通常会显示环境名。此后所有 pythonpip 命令都只在该环境中生效。
3. 安装包 pip install requests numpy 在激活的环境中使用 pip 安装所需包。
4. 停用环境 deactivate 退出当前虚拟环境,回到系统全局环境。
5. 删除环境 直接删除整个环境文件夹即可。 例如 rm -rf venv (Linux/macOS) 或 rmdir /s venv (Windows)。

示例:

bash 复制代码
# 1. 在项目根目录下创建名为 'venv' 的环境
python -m venv venv

# 2. 激活环境
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate

# 3. 确认 Python 解释器位置
which python  # 输出应为:/path/to/your/project/venv/bin/python

# 4. 安装包
pip install flask pandas

# 5. 导出环境依赖(在激活环境下)
pip freeze > requirements.txt

# 6. 停用环境
deactivate

requirements.txt 恢复环境:

bash 复制代码
# 创建并激活新环境后
pip install -r requirements.txt
venv & Conda

Conda 和 venv 是不同层级的环境管理工具,通常不建议在同一个项目目录中同时使用它们 (比如在 Conda 环境内部再创建 venv),因为这会造成依赖管理的混乱。

结合策略的核心思想是:利用 Conda 管理复杂的、非 Python 的依赖和特定的 Python 版本;利用 venv 的纯粹和标准化来锁定最终的项目依赖。


  • 策略一:使用 Conda 创建 Python 解释器,用 venv 管理项目依赖

这是最实用的一种结合方式。当项目需要一个 Conda 来管理的特定 Python 版本,或者依赖某个通过 Conda 才能方便安装的复杂库(如科学计算栈、PyTorch/TensorFlow 等)时,可以采用此策略。

工作流程:

  1. 用 Conda 创建"基础"环境:创建一个包含特定 Python 版本和复杂依赖的 Conda 环境。
  2. 在此环境中创建 venv :利用这个 Conda 环境中的 python 解释器,为你的具体项目创建一个纯净的 venv
  3. venv 中开发 :所有项目特定的、纯 Python 的依赖都通过 venv 环境中的 pip 来安装和管理。

示例: 当需要一个包含 PyTorch 和特定 Python 版本的环境来进行机器学习项目。

bash 复制代码
# 1. 使用 Conda 创建一个包含 Python 和 PyTorch 的环境
conda create -n my_conda_env python=3.9 pytorch torchvision torchaudio cpuonly -c pytorch
conda activate my_conda_env

# 2. 进入你的项目目录
cd /path/to/my_project

# 3. 使用 Conda 环境中的 Python 解释器来创建一个 venv
python -m venv venv

# 4. 激活项目自己的 venv(注意:此时你已"脱离"Conda环境,进入了更轻量的venv)
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate

# 5. 现在,你的 Python 来自 Conda 环境(包含PyTorch),但 pip 指向的是纯净的 venv。
# 你可以安装项目其他依赖,它们不会污染上层的 Conda 环境。
pip install requests matplotlib jupyter

# 6. 导出依赖时,只导出你在 venv 中安装的包,非常干净。
pip freeze > requirements.txt

策略一所推荐的嵌套(清晰的层级依赖及项目管理):

复制代码
Conda环境 (my_conda_env) - 【角色:基础解释器与核心库提供商】
  ├── Python 3.9
  └── PyTorch (通过Conda安装,包含其复杂的C++依赖)

项目venv (./venv) - 【角色:纯净的`项目依赖管理器`】
  ├── Python解释器 -> 符号链接指向 ../my_conda_env/bin/python
  └── 所有项目包 (通过pip安装)
        ├── requests
        ├── matplotlib
        └── jupyter
  • 核心思想 :在这个结构里,上层的Conda环境仅仅充当了一个"Python解释器和核心基础库的提供者" ,而venv相当于一个完整的项目管理环境。当激活项目的venv后,并不是 在同时使用两个环境管理器。你只是在用一个由Conda提供的、干净的Python解释器来运行一个标准的venv

  • 依赖流向是单向的 :项目venv中的pip不会 去修改上层Conda环境中的任何包。它只在自己的site-packages目录里安装包。当你pip freeze时,得到的requirements.txt不包含PyTorch等由Conda安装的底层包,只包含你在项目层面明确安装的包,因此非常干净。

  • 依赖清晰requirements.txt 只包含你明确为项目安装的包,不包含 Conda 安装的大量底层依赖。

  • 环境纯净 :项目环境独立于 Conda 环境,避免了在 Conda 环境内直接使用 pip 可能造成的依赖冲突。

  • 易于重现 :其他人只需先准备好相同的 Conda 基础环境,然后用你的 requirements.txt 即可复现项目环境。


策略二:根据场景选择工具


这是一种更简单直接的结合方式,无需嵌套,根据项目需求选择其一。

场景 推荐工具 理由
数据科学、机器学习项目 Conda 依赖复杂的科学计算库(NumPy, SciPy, Pandas)、框架(PyTorch, TensorFlow)或需要特定版本的 Python。Conda 能很好地处理这些包及其非 Python 依赖。
Web 开发、纯 Python 库开发 venv 依赖大多是纯 Python 包,可以从 PyPI 直接获取。venv 更轻量、启动更快,且生成的 requirements.txt 是行业标准。
需要隔离系统 Python venv 在不允许修改系统 Python 的环境中,venv 是最安全、最标准的选择。
混合语言项目 Conda 项目依赖不仅限于 Python,还涉及 R、C/C++ 库等,Conda 是跨语言的包管理器。
  1. 不要嵌套使用 :避免在激活的 Conda 环境内再创建和激活 venv,反之亦然。这会导致路径混乱。不推荐的嵌套(混乱的依赖混合):

    复制代码
    Conda环境 (env_A)
      ├── 通过Conda安装了包 numpy, requests
      └── 内部激活了 venv
            └── 又通过pip安装了包 pandas, flask
    • 问题 :无法清晰界定一个包(比如requests)到底应该由Conda管理还是由pip管理。Conda的求解器无法感知venv内pip安装的包,可能导致无法解决的依赖冲突。整个环境的依赖关系是一团乱麻。
  2. 明确分工

    • Conda :擅长管理 Python 解释器本身、数据科学栈、有复杂非 Python 依赖的包
    • venv :擅长管理 纯 Python 项目的依赖,生成干净、标准的依赖列表。
  3. 推荐的混合策略 :对于复杂项目,采用 策略一 。先用 Conda 搭建一个包含"重型"依赖的基础,然后在这个基础上用 venv 为你的具体项目创建一个纯净的、可复现的依赖空间。

  4. 简单项目 :如果是纯 Python 项目,直接使用 venv 就足够了,无需引入 Conda。

相关推荐
万粉变现经纪人6 小时前
如何解决 pip install -r requirements.txt 子目录可编辑安装缺少 pyproject.toml 问题
开发语言·python·scrapy·beautifulsoup·scikit-learn·matplotlib·pip
油条不卖7 小时前
本地window10同步ubuntu上conda指定环境,并在C#项目中通过Python.NET调用自定义python接口
linux·ubuntu·conda
万粉变现经纪人12 小时前
如何解决 pip install -r requirements.txt 私有索引未设为 trusted-host 导致拒绝 问题
开发语言·python·scrapy·flask·beautifulsoup·pandas·pip
坠金18 小时前
linux/centos迁移conda文件夹
linux·centos·conda
万粉变现经纪人1 天前
如何解决 pip install -r requirements.txt 私有仓库认证失败 401 Unauthorized 问题
开发语言·python·scrapy·flask·beautifulsoup·pandas·pip
kobe_OKOK_2 天前
windows 下载 pip包,debian离线安装
windows·debian·pip
逍遥创江湖2 天前
包管理 pip ,conda;pycharm中使用conda 创建的虚拟环境
pycharm·conda·pip
淮北4943 天前
windows安装minicoda
windows·python·conda
Roc-xb4 天前
ModuleNotFoundError: No module named ‘conda_token‘
开发语言·python·conda