Anaconda创建新环境并安装包的完整指南

作者:

文章目录
  • 如果你必须混用,按这个顺序:
  • 情况 推荐方案 个人项目,快速原型 混用也可以,但要按顺序 生产环境,团队协作 严格避免混用 需要特定pip包 用 conda install pip 后安装 环境已混乱但有bug 重建干净环境 关键原则:不是"绝对不能混用",而是"混用会增加复杂度"。如果你能接受偶尔花几小时debug神秘的环境问题,混用也没问题。但对于重要项目,保持环境纯净是值得的。 所以开始安装的介绍
  • 目录
    • 📊 为什么能工作但有问题?
      • 1. 依赖解析机制不同
      • 2. 包命名和版本不匹配
      • 3. 安装位置可能重叠但不受管理
    • 🧪 实际会发生什么?
      • 场景A:看起来正常
      • 场景B:隐性问题
      • 场景C:更新灾难
    • 🔧 混用时如何最小化风险?
      • 1. 最佳实践顺序
      • 2. 使用conda的pip
      • 3. 记录所有包来源
      • 4. 创建"安全层"
    • 📝 实际案例对比
      • ❌ 混乱的环境(你的现状)
      • ✅ 整洁的环境
    • 💡 总结建议
      • 📦 Conda 环境管理完整指南
        • 一、Conda 创建和管理虚拟环境
          • 1. 创建环境
          • 2. 激活/停用环境
          • 3. 安装/更新包
          • 4. 查看环境信息
          • 5. 导出和导入环境
          • 6. 删除环境
          • 7. 克隆和重命名环境
      • 🐍 Pip + venv 环境管理完整指南
        • 二、使用 venv(Python内置)创建虚拟环境
          • 1. 创建环境
          • 2. 激活/停用环境
          • 3. 安装/更新包
          • 4. 查看环境信息
          • 5. 导出和导入环境
          • 6. 删除环境
          • 7. 实用工具和技巧
      • 🔄 对比总结
        • Conda vs Pip+venv 对比
        • 🎯 最佳实践建议
          • 选择 Conda 当:
            • 选择 venv+pip 当:
              • 通用建议:
                • 快速参考卡:

                由于python包的主要安装方式分为conda和pip,并且这两种安装方式混用会带来

                借用Deepseek的回答,

                这是一个很好的问题!混用 conda 和 pip 不是不能用,而是 容易引发难以调试的问题。让我详细解释:

                conda: 使用SAT求解器,考虑所有包(包括C库、系统依赖)
                pip: 简单的递归依赖解析,只考虑Python包
                
                • 冲突示例:conda安装的numpy可能依赖特定的MKL库,pip安装的scipy可能要求不同的numpy版本

                # 同样的包,conda和PyPI可能有不同:
                conda install tensorflow-gpu  # conda的命名
                pip install tensorflow        # pip的命名
                # 版本号也可能不同步
                conda: opencv 4.8.0
                pip:   opencv-contrib-python 4.8.1

                conda环境目录:
                ├── site-packages/   # conda管理
                └── pip-installed/   # pip安装的包可能在这里
                # pip可能覆盖conda的文件,但conda不知道

                # 大多数情况能正常运行
                import numpy  # 来自conda
                import pandas # 来自conda
                import requests # 来自pip
                print("一切正常!")  # ✅

                # 安装时无报错,但运行时崩溃
                import torch  # conda安装的CUDA版本
                import some_pip_package  # pip安装
                # 某天突然:Segmentation fault!
                # 因为pip包更新了底层依赖

                # 1. 先用conda安装
                conda install numpy==1.24.0
                # 2. 再用pip"修复"问题
                pip install numpy==1.26.0  # 覆盖conda版本
                # 3. 使用conda更新其他包
                conda update pandas  # conda检测到numpy 1.24.0,实际是1.26.0
                # 结果:环境状态混乱,conda可能破坏pip的包

                如果你必须混用,按这个顺序:

                # 1. 先conda安装尽可能多的包
                conda install numpy pandas scipy matplotlib
                # 2. 再pip安装conda没有的包
                pip install some-rare-package
                # 3. 避免再用conda更新(特别是基础包)

                # 在conda环境中安装pip
                conda install pip
                
                # 使用这个pip(在conda环境中)
                python -m pip install package  # 而不是直接 pip install
                

                # 导出时包含pip包
                conda env export --from-history > environment.yml
                conda list --explicit > spec-list.txt
                pip freeze > requirements.txt
                

                # 创建基础环境(conda only)
                conda create -n base_env python=3.9 numpy pandas
                # 创建扩展环境(继承+添加pip包)
                conda create -n my_project --clone base_env
                conda activate my_project
                pip install pip_only_package

                包来源: 
                - 50% conda (numpy, mkl等)
                - 50% pip (colorama, GPUtil等)
                问题风险: 高
                更新风险: 很高
                可复现性: 低

                # environment.yml
                channels:
                  - conda-forge
                  - defaults
                dependencies:
                  - python=3.9
                  - numpy=1.24
                  - pandas=2.3.3
                  - pip
                  - pip:
                    - GPUtil==1.4.0  # 仅pip有的包
                    - tqdm==4.67.1

                情况 推荐方案
                个人项目,快速原型 混用也可以,但要按顺序
                生产环境,团队协作 严格避免混用
                需要特定pip包 conda install pip 后安装
                环境已混乱但有bug 重建干净环境

                关键原则:不是"绝对不能混用",而是"混用会增加复杂度"。如果你能接受偶尔花几小时debug神秘的环境问题,混用也没问题。但对于重要项目,保持环境纯净是值得的。

                所以开始安装的介绍

                # 基础创建(默认python版本)
                conda create --name myenv
                # 创建时指定Python版本
                conda create --name myenv python=3.9
                # 创建时安装包
                conda create --name myenv python=3.9 numpy pandas matplotlib
                # 创建环境并指定频道(优先使用conda-forge)
                conda create --name myenv --channel conda-forge python=3.10 numpy scipy
                # 创建完全独立的环境(不继承base环境的包)
                conda create --name myenv --no-default-packages python=3.9

                # 激活环境
                conda activate myenv
                # 停用当前环境
                conda deactivate
                # 激活base环境
                conda activate base
                # 直接运行某个环境中的命令(不激活)
                conda run -n myenv python script.py

                # 激活环境后安装
                conda activate myenv
                conda install numpy pandas
                # 在指定环境中安装(无需激活)
                conda install -n myenv numpy scipy matplotlib
                # 安装特定版本
                conda install numpy=1.24.0 pandas=2.1.0
                # 从特定频道安装
                conda install -c conda-forge tensorflow
                conda install -c pytorch -c nvidia pytorch torchvision
                # 更新包
                conda update numpy           # 更新单个包
                conda update --all          # 更新所有包
                # 安装包到特定版本(降级)
                conda install numpy=1.21.0

                # 列出所有环境
                conda env list
                conda info --envs
                # 查看当前环境信息
                conda info
                # 查看环境中已安装的包
                conda list
                conda list -n myenv
                # 查看特定包的信息
                conda search numpy
                conda search "numpy>=1.20"
                # 查看环境位置
                conda env list --json | jq '.envs[]'

                # 导出当前环境到yml文件
                conda env export > environment.yml
                # 导出最小依赖(仅明确安装的包)
                conda env export --from-history > environment_min.yml
                # 从yml文件创建环境
                conda env create -f environment.yml
                # 更新现有环境(从yml文件)
                conda env update -f environment.yml --prune
                # 导出可移植的环境spec文件
                conda list --explicit > spec-file.txt
                conda create --name newenv --file spec-file.txt

                # 删除环境及其所有包
                conda remove --name myenv --all
                # 确认删除(交互式)
                conda remove --name myenv --all --yes  # 跳过确认
                # 删除未使用的包和缓存
                conda clean --all
                # 删除特定包
                conda remove -n myenv numpy pandas

                # 克隆环境
                conda create --name myenv_clone --clone myenv
                # 重命名环境(通过克隆+删除)
                conda create --name new_name --clone old_name
                conda remove --name old_name --all
                # 备份环境
                conda env export -n myenv > backup_$(date +%Y%m%d).yml

                # 创建虚拟环境
                python -m venv myenv
                # 创建环境并指定Python解释器
                python3.9 -m venv myenv
                /usr/bin/python3.9 -m venv myenv
                # 创建包含系统站点包的环境(不推荐)
                python -m venv --system-site-packages myenv
                # 创建环境并升级pip/setuptools
                python -m venv myenv --upgrade-deps
                # 创建环境到指定路径
                python -m venv /path/to/myenv

                # Windows (PowerShell)
                .myenvScriptsActivate.ps1
                # Windows (CMD)
                myenvScriptsactivate.bat
                # Linux/Mac
                source myenv/bin/activate
                # 停用环境
                deactivate
                # 使用虚拟环境但不激活
                myenv/bin/python script.py
                myenv/Scripts/python.exe script.py

                # 激活环境后安装
                source myenv/bin/activate
                pip install numpy pandas
                # 安装特定版本
                pip install numpy==1.24.0 pandas==2.1.0
                # 从requirements文件安装
                pip install -r requirements.txt
                # 安装开发依赖
                pip install -e .  # 当前目录的setup.py
                pip install -e ".[dev]"  # 额外依赖组
                # 更新包
                pip install --upgrade numpy
                pip install --upgrade -r requirements.txt
                # 安装包(包含依赖)
                pip install package[extra_feature]
                # 强制重新安装
                pip install --force-reinstall numpy

                # 列出已安装的包
                pip list
                pip freeze
                # 查看包详情
                pip show numpy
                # 检查过时的包
                pip list --outdated
                # 查看环境位置
                which python  # Linux/Mac
                where python  # Windows
                # 查看Python版本
                python --version

                # 导出所有包
                pip freeze > requirements.txt
                # 导出仅项目依赖(使用pipreqs)
                pip install pipreqs
                pipreqs . --force
                # 从requirements文件安装
                pip install -r requirements.txt
                # 导出依赖图
                pipdeptree
                pip install pipdeptree
                pipdeptree > dependencies.txt
                # 生成约束文件(精确版本)
                pip freeze --exclude-editable > constraints.txt

                # 停用环境(如果已激活)
                deactivate
                # 直接删除文件夹
                rm -rf myenv  # Linux/Mac
                rmdir /s myenv  # Windows CMD
                # 或者手动删除目录
                # Windows: 删除 myenv 文件夹
                # Linux/Mac: rm -rf myenv
                # 删除包
                pip uninstall numpy
                pip uninstall -r requirements.txt -y  # 批量删除
                # 删除所有包(保留环境)
                pip freeze | xargs pip uninstall -y

                # 使用virtualenvwrapper(更方便的管理)
                pip install virtualenvwrapper
                # Linux/Mac添加到bashrc:
                # export WORKON_HOME=$HOME/.virtualenvs
                # source /usr/local/bin/virtualenvwrapper.sh
                # 快速激活
                workon myenv      # 激活
                deactivate        # 退出
                rmvirtualenv myenv # 删除
                mkvirtualenv myenv # 创建
                # 使用pipenv(更现代的包管理)
                pip install pipenv
                pipenv install numpy pandas
                pipenv shell      # 进入环境
                exit              # 退出
                pipenv --rm       # 删除环境
                # 使用poetry(依赖管理工具)
                pip install poetry
                poetry new project_name
                poetry install
                poetry shell
                exit
                poetry env remove python

                操作 Conda Pip + venv
                创建环境 conda create -n myenv python -m venv myenv
                激活 conda activate myenv source myenv/bin/activate
                安装包 conda install numpy pip install numpy
                指定版本 conda install numpy=1.24 pip install numpy==1.24.0
                导出环境 conda env export > env.yml pip freeze > requirements.txt
                导入环境 conda env create -f env.yml pip install -r requirements.txt
                删除环境 conda remove -n myenv --all rm -rf myenv
                查看环境 conda env list ls ~/.virtualenvs/ 或查看文件夹
                优势 管理非Python依赖、科学计算友好 轻量、Python标准、速度快

                1. 需要管理C++库、CUDA等非Python依赖
                2. 使用科学计算栈(numpy, scipy, pandas, matplotlib)
                3. 需要多语言包管理
                4. 项目跨平台一致性很重要

                1. 纯Python项目
                2. 需要轻量级环境
                3. 部署到Docker容器
                4. 已经使用pyproject.toml

                # 1. 总是为每个项目创建独立环境
                # 2. 记录环境配置(requirements.txt或environment.yml)
                # 3. 定期清理不再使用的环境
                # 4. 使用版本控制工具跟踪环境文件
                # 5. 在README中说明环境创建步骤
                

                # Conda 常用命令
                conda create -n proj python=3.10  # 创建
                conda activate proj               # 激活
                conda install pandas              # 安装
                conda env export > env.yml        # 导出
                conda deactivate                  # 退出
                conda remove -n proj --all        # 删除
                # Pip + venv 常用命令
                python -m venv proj               # 创建
                source proj/bin/activate          # 激活
                pip install pandas                # 安装
                pip freeze > requirements.txt     # 导出
                deactivate                        # 退出
                rm -rf proj                       # 删除

                这样你就有了完整的虚拟环境管理指南!需要我详细说明某个特定部分吗?

                到此这篇关于Anaconda创建新环境并安装包的完整指南的文章就介绍到这了,更多相关Anaconda创建新环境内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

                您可能感兴趣的文章:

                • anaconda中Conda创建虚拟环境的实现步骤
                • Anaconda中Python虚拟环境的创建使用与删除方法详解
                • anaconda如何创建和删除环境
                • 利用Anaconda创建虚拟环境的全过程
                • 解析Anaconda创建python虚拟环境的问题
                • Anaconda 查看、创建、管理和使用python环境的方法

                站内搜索