【Anaconda】是什么,如何使用它代替pip+env

以下是基于 Conda 在全局创建虚拟环境并运行 D 盘项目的完整操作流程及命令:

1. 创建全局虚拟环境‌
conda create --name myenv python=3.8  
# myenv 为环境名称,python=3.8 指定版本(可选):ml-citation{ref="1,4" data="citationList"}

2. 激活虚拟环境‌

conda activate myenv  
# 终端提示符前显示 (myenv) 表示激活成功:ml-citation{ref="3,5" data="citationList"}

3. 切换到项目目录‌

cd /d D:\your_project_path  
# Windows 切换到 D 盘项目目录:ml-citation{ref="6" data="citationList"}

4. 安装项目依赖‌
conda install --file requirements.txt
#----------------------或者
pip install -r requirements.txt  
# 优先使用 conda install --file requirements.txt(需包名匹配 Conda 仓库):ml-citation{ref="2,6" data="citationList"}

5. 运行项目脚本‌

python main.py  
# 此时解释器和依赖均来自 myenv 环境:ml-citation{ref="5,7" data="citationList"}

验证关键环节‌

Python 路径检查‌


where python  
# 输出路径应包含 ...\Anaconda3\envs\myenv\python.exe:ml-citation{ref="5,7" data="citationList"}


依赖隔离性验证‌
在 main.py 中添加代码验证包路径:


import requests  # 示例包
print(requests.__file__)  # 路径应指向 myenv 环境目录:ml-citation{ref="5,6" data="citationList"}

补充说明‌
环境全局性‌:Conda 虚拟环境默认安装在 Anaconda 的 envs 目录下,与项目物理位置无关。
IDE 配置‌:若在 PyCharm/VSCode 中开发,需手动选择虚拟环境的 Python 解释器(路径为 ...envs\myenv\python.exe)。
依赖冲突处理‌:若安装失败,可通过 conda env export > environment.yml 导出精确依赖版本,重建环境。
错误排查‌
环境未激活‌:若直接运行 python main.py 未显示 (myenv),需重新执行 conda activate myenv。
包安装路径错误‌:激活环境后安装依赖仍未隔离,检查是否误用了 sudo pip install(需避免管理员权限安装全局包)。

我们来一步步理解 Anaconda:

  1. Anaconda 是什么?

    • 它是一个 Python 和 R 语言的发行版 (Distribution): 想象一下,它是一个“大礼包”。你下载安装 Anaconda 后,不仅得到了 Python 本身,还预装了超过250个常用的科学计算、数据分析库(如 NumPy, Pandas, Matplotlib, SciPy, Jupyter Notebook, Spyder 等)。这省去了你手动一个个 pip install 的麻烦。

    • 它包含一个强大的包管理器和环境管理器 conda: 这是 Anaconda 的核心。conda 不仅能管理 Python 包,还能管理非 Python 的依赖(比如 C/C++ 库,甚至是 R 语言包)。这是 pip + venv 做不到的。

  2. conda vs pip + venv

    特性pip + venv (或 virtualenv)conda (Anaconda/Miniconda 的核心)
    环境管理venv 创建隔离的 Python 环境conda 创建隔离的环境,可以指定 Python 版本,甚至可以包含非 Python 软件
    包管理pip 从 PyPI (Python Package Index) 安装 Python 包conda 从 Anaconda 仓库 (或其他 conda channels 如 conda-forge) 安装包,这些包通常是预编译好的,能处理复杂的二进制依赖
    依赖处理pip 主要处理 Python 依赖,有时二进制依赖会出问题conda 能更好地处理复杂的依赖关系,包括非 Python 库 (如 MKL, CUDA, HDF5 等)
    包的类型主要管理 Python 源码包或 Wheels管理任何语言的包(只要有人为它创建了 conda 包)
    适用场景通用 Python 开发,Web 开发等数据科学、机器学习、科学计算,以及需要管理复杂跨语言依赖的项目
    预装包venv 创建的环境是纯净的Anaconda 自带大量科学包,Miniconda 则非常精简(只含 conda 和少量基础包)
    跨平台pip 和 venv 跨平台,但包的编译可能因平台而异conda 提供的包通常是针对各平台预编译的,环境迁移和一致性更好
  3. 为什么选择 Anaconda/conda?

    • 方便性: 一次安装,常用数据科学库基本都齐了。

    • 强大的依赖解决: 当你遇到一些需要复杂C/C++编译的库时(比如某些地理信息库、深度学习库),conda 通常能更顺利地安装它们,因为它会处理好底层的非 Python 依赖。

    • 环境隔离更彻底: conda 环境不仅隔离 Python 包,还可以隔离 Python 解释器本身的版本。你可以轻松创建一个 Python 3.7 的环境,再创建一个 Python 3.9 的环境,互不干扰。

    • 跨平台一致性: conda 环境在不同操作系统间(Windows, macOS, Linux)的迁移和复现通常比 venv + requirements.txt 更可靠,尤其当涉及到非 Python 依赖时。

    • Channels (软件源): conda 有官方的 defaults channel,还有社区维护的 conda-forge (非常流行,包很全)、bioconda (生物信息学) 等。这使得获取和安装特定领域的软件包变得容易。

  4. 怎么用 Anaconda (主要是用 conda 命令)?

    假设你已经安装了 Anaconda (或 Miniconda,一个轻量版的 Anaconda,只包含 conda 和一些基础包,其他包需要自己安装)。

    • 打开 Anaconda Prompt (Windows) 或终端 (macOS/Linux): 安装后,Windows 用户可以在开始菜单找到 "Anaconda Prompt",macOS/Linux 用户可以直接使用系统终端,conda 命令会被添加到 PATH。

    • 检查 conda 是否安装成功:

            conda --version
          
    • 管理环境:

      • 创建新环境:

              conda create --name myenv python=3.9 # 创建一个名为 myenv 的环境,并指定 Python 版本为 3.9
        conda create -n myenv2 pandas numpy # 创建环境 myenv2 并同时安装 pandas 和 numpy
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

      • 激活环境:

              conda activate myenv # Windows, macOS, Linux
        # 或者 source activate myenv (老版本,部分Linux/macOS仍可用)
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

        激活后,你的命令行提示符会显示当前环境名,如 (myenv) C:\Users\YourName>。此时 python 命令和 pip 命令都会指向这个环境内的版本。

      • 查看所有环境:

              conda env list
        # 或者 conda info --envs
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

        你会看到一个列表,带 * 号的是当前激活的环境。

      • 退出当前环境 (回到 base 环境或上一个环境):

              conda deactivate
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

      • 删除环境:

              conda env remove --name myenv
        # 或者 conda remove --name myenv --all (确保删除所有包)
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

      • 克隆环境:

              conda create --name newenv --clone oldenv
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

    • 管理包 (在激活的环境中进行):

      • 安装包:

              conda install numpy pandas matplotlib
        conda install scipy=1.8 # 安装特定版本的 scipy
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

      • 从特定 channel 安装包 (例如 conda-forge):

              conda install -c conda-forge <package_name>
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

        conda-forge 是一个社区维护的 channel,包更新快且全面。你也可以将其永久添加到你的 channel 列表并设为高优先级:

              conda config --add channels conda-forge
        conda config --set channel_priority strict
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

      • 查看已安装的包:

              conda list
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

      • 搜索包:

              conda search <package_name>
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

      • 更新包:

              conda update <package_name>
        conda update --all # 更新环境中所有包
        conda update conda # 更新 conda 自身
        conda update anaconda # 更新 Anaconda 发行版的所有包(如果安装的是 Anaconda)
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

      • 卸载包:

              conda remove <package_name>
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

    • 导出和导入环境 (用于协作和复现):

      • 导出环境到 YAML 文件:

              conda env export > environment.yml
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

      • 从 YAML 文件创建环境:

              conda env create -f environment.yml
            

        IGNORE_WHEN_COPYING_START

        content_copydownload

        Use code with caution. Bash

        IGNORE_WHEN_COPYING_END

        这会在新机器上创建一个与 environment.yml 文件描述的完全相同的环境(包括 Python 版本和所有包)。

    • conda 和 pip 一起用?

      • 首选 conda install: 在 conda 环境中,尽量先用 conda install。

      • 备选 pip install: 如果某个包在 conda channels (如 anaconda官方, conda-forge) 中找不到,但 PyPI 上有,你可以在激活 conda 环境后使用 pip install <package_name>。

      • 注意: 尽量不要混用。如果一个包用 conda 安装了,就不要再用 pip 更新它,反之亦然。先用 conda 安装核心依赖,再用 pip 安装 conda 源中没有的。

  5. Anaconda Navigator 是什么?
    它是一个图形用户界面 (GUI),可以让你通过点击按钮来管理环境、安装包、启动应用 (如 Jupyter Notebook, Spyder, VS Code 等)。对于不喜欢命令行的用户来说很方便,但命令行 (conda) 通常更灵活、更强大。

总结一下,对你来说:

  • 你已经理解了虚拟环境的核心概念,这非常好。

  • 可以将 conda 环境看作是 venv 的“超级加强版”。

  • conda 不仅能帮你创建隔离的 Python 环境,还能帮你管理不同版本的 Python,以及那些复杂的、非 Python 的依赖库。

  • 当你主要做数据科学、机器学习项目,或者需要安装一些在 pip 下比较麻烦的库时,Anaconda/conda 会是你的好帮手。

  • 对于常规的 Web 开发或小型脚本,venv + pip 依然是很棒的选择。

尝试用 conda create 创建一个新环境,激活它,然后用 conda install 安装一些包,你很快就能体会到它的便利了!如果你更喜欢轻量级,可以卸载 Anaconda,然后安装 Miniconda,它只包含 conda 和 Python,其他包都需要你自己 conda install。

我还有个疑问,anaconda 是安装在C盘的,我的项目在D盘目录。这样的命令不需要在D盘我的目录中打开CMD窗口和anaconda shell prompt么,直接打开在开始菜单打开的Anaconda Prompt会不会是全局环境,例如下面的命令:

conda create --name myenv python=3.9 # 创建一个名为 myenv 的环境,并指定 Python 版本为 3.9
conda create -n myenv2 pandas numpy # 创建环境 myenv2 并同时安装 pandas 和 numpy

你提的这个问题非常好,这正是 conda 和 venv 的一个核心区别!

简单回答:

是的,你理解得基本正确。

  • conda create 命令在哪里运行,并不重要。
    无论你在哪个盘符、哪个目录下打开 Anaconda Prompt (或配置好 conda 的普通终端) 并执行 conda create --name myenv python=3.9,conda 都会将这个名为 myenv 的环境创建在 Anaconda 安装目录下的 envs 文件夹里 (例如,如果你 Anaconda 安装在 C:\Users\YourName\anaconda3,那么 myenv 就会在 C:\Users\YourName\anaconda3\envs\myenv)。

  • Anaconda Prompt (或任何配置了 conda 的终端) 启动时,默认通常会激活 base 环境。 这个 base 环境也是 Anaconda 自带的一个环境,你可以把它看作是 Anaconda 的“全局”环境,但它仍然是一个 conda 环境。

  • 重点在于 conda activate myenv。 当你在D盘的项目目录中工作时,你需要先 cd D:\path\to\your\project,然后运行 conda activate myenv。这时,你的终端环境就会切换到 myenv,之后你运行 python your_script.py 或 jupyter notebook 都会使用 myenv 中的 Python 解释器和库。

详细解释:

  1. Conda 环境的存储位置:

    • 不像 venv 那样,默认在项目文件夹内创建一个如 venv 或 .venv 的子文件夹来存放虚拟环境。

    • conda 管理的环境默认都集中存放在 Anaconda 安装目录下的 envs 子目录中。例如:

      • C:\Users\YourName\anaconda3\envs\myenv

      • C:\Users\YourName\anaconda3\envs\myenv2

    • 这样做的好处是,多个项目可以共享同一个 conda 环境,如果它们的依赖相同的话。当然,更常见的做法是为每个项目创建独立的环境。

  2. Anaconda Prompt / Shell 的作用:

    • 当你从开始菜单打开 "Anaconda Prompt" (Windows) 或在配置了 conda init 的终端 (macOS/Linux) 中,它会做一些初始化工作,确保 conda 命令可用,并且通常会默认激活 base 环境。

    • 此时命令行提示符可能会显示 (base) C:\Users\YourName>。

  3. conda create 的行为:

    • 当你输入 conda create --name myenv python=3.9,conda 知道要去它管理的 envs 目录下创建这个新环境。它不需要知道你当前在哪个目录。

  4. 在项目中使用 conda 环境的关键步骤:

    • 第一步:导航到你的项目目录。

            cd D:\my_project_folder
          
    • 第二步:激活你为该项目创建的或想要使用的 conda 环境。

            conda activate myenv
          

      IGNORE_WHEN_COPYING_START

      content_copydownload

      Use code with caution. Bash

      IGNORE_WHEN_COPYING_END

      激活后,你的命令行提示符会变成类似 (myenv) D:\my_project_folder>。

    • 第三步:运行你的 Python 代码或工具。

            python main.py
      jupyter notebook
          

      IGNORE_WHEN_COPYING_START

      content_copydownload

      Use code with caution. Bash

      IGNORE_WHEN_COPYING_END

      现在,这些命令会使用 myenv 环境中的 Python 解释器和安装在 myenv 中的所有包。

  5. 和 venv 的对比:

    • venv:

      1. cd D:\my_project_folder

      2. python -m venv .venv (在项目内创建 .venv 文件夹)

      3. .\.venv\Scripts\activate (Windows) 或 source .venv/bin/activate (macOS/Linux) (激活项目内的环境)

    • conda:

      1. (任意位置,或 Anaconda Prompt) conda create --name myenv_for_project_D python=3.9 pandas (创建环境,存储在 Anaconda 的 envs 目录)

      2. cd D:\my_project_folder

      3. conda activate myenv_for_project_D (激活中心存储的环境,但当前工作目录是项目目录)

总结:

  • conda 环境的创建是位置无关的(指相对于你的项目目录而言),它们都存储在 Anaconda 的中央位置。

  • conda 环境的使用(激活)则是与你的当前工作目录相关的,因为你通常会在你的项目目录中激活环境,以便在该环境中运行项目代码。

  • 直接从开始菜单打开 Anaconda Prompt 然后创建环境,并不会让这个环境变成一个特殊的“全局”环境(相对于其他 conda 环境而言)。它只是一个普通的 conda 环境,和其他用 conda create 创建的环境一样,都存储在 envs 目录下。base 环境可以看作是 Anaconda 的默认/基础环境。

所以,你的理解是正确的,不需要在D盘的项目目录中打开 Anaconda Prompt 才能创建针对该项目的环境。你可以在任何地方创建 conda 环境,然后在你的项目目录中激活它来使用。

conda activate flyenv

关于虚拟环境的位置和激活

  1. 创建环境的位置

    • 在 ‌任意目录‌ 下通过 Anaconda Prompt 或终端执行 conda create 命令均可,虚拟环境默认会安装在 Anaconda 的 envs 目录中(如 C:\Users\用户名\Anaconda3\envs\环境名)。
    • 与环境创建时的当前目录无关‌,除非你通过 --prefix 指定自定义路径(如 conda create --prefix ./myenv)。
  2. 激活环境的位置

    • 激活环境与当前目录无关‌:无论你在哪个目录下执行 conda activate 环境名,激活的都是同一个全局环境(环境名需存在)。
    • 项目目录的作用‌:
      • 通常我们会 ‌在项目目录下激活环境‌,目的是为了:
        1. 方便后续安装的包或运行的代码与当前项目关联。
        2. 配合工具(如 Jupyter Notebook)自动识别环境。
      • 但本质上,激活环境只是切换了 Python 解释器和依赖包的路径,与目录无关。

实际工作流程示例

假设你的项目目录是 D:\projects\my_project

# 1. 在任意位置创建环境(环境会统一存到 Anaconda 的 envs 下)
conda create --name my_project_env python=3.8

# 2. 进入项目目录
cd D:\projects\my_project

# 3. 激活环境(无论在哪个目录下激活,效果相同)
conda activate my_project_env

# 4. 在项目目录下安装包或运行代码
pip install -r requirements.txt
python main.py

以下是基于 Conda 在全局创建虚拟环境并运行 D 盘项目的完整操作流程及命令:

1. 创建全局虚拟环境‌
conda create --name myenv python=3.8  
# myenv 为环境名称,python=3.8 指定版本(可选):ml-citation{ref="1,4" data="citationList"}

2. 激活虚拟环境‌

conda activate myenv  
# 终端提示符前显示 (myenv) 表示激活成功:ml-citation{ref="3,5" data="citationList"}

3. 切换到项目目录‌

cd /d D:\your_project_path  
# Windows 切换到 D 盘项目目录:ml-citation{ref="6" data="citationList"}

4. 安装项目依赖‌

pip install -r requirements.txt  
# 优先使用 conda install --file requirements.txt(需包名匹配 Conda 仓库):ml-citation{ref="2,6" data="citationList"}

5. 运行项目脚本‌

python main.py  
# 此时解释器和依赖均来自 myenv 环境:ml-citation{ref="5,7" data="citationList"}

验证关键环节‌

Python 路径检查‌


where python  
# 输出路径应包含 ...\Anaconda3\envs\myenv\python.exe:ml-citation{ref="5,7" data="citationList"}


依赖隔离性验证‌
在 main.py 中添加代码验证包路径:


import requests  # 示例包
print(requests.__file__)  # 路径应指向 myenv 环境目录:ml-citation{ref="5,6" data="citationList"}

补充说明‌
环境全局性‌:Conda 虚拟环境默认安装在 Anaconda 的 envs 目录下,与项目物理位置无关。
IDE 配置‌:若在 PyCharm/VSCode 中开发,需手动选择虚拟环境的 Python 解释器(路径为 ...envs\myenv\python.exe)。
依赖冲突处理‌:若安装失败,可通过 conda env export > environment.yml 导出精确依赖版本,重建环境。
错误排查‌
环境未激活‌:若直接运行 python main.py 未显示 (myenv),需重新执行 conda activate myenv。
包安装路径错误‌:激活环境后安装依赖仍未隔离,检查是否误用了 sudo pip install(需避免管理员权限安装全局包)。

特殊情况:将环境直接创建在项目目录内

如果想将环境和项目绑定得更紧密,可以指定路径创建环境:

bashCopy Code

# 在项目目录下创建环境文件夹 conda create --prefix ./venv python=3.8

# 激活时需指定完整路径 conda activate ./venv

  • 优点‌:环境与项目完全绑定,便于迁移或删除。
  • 缺点‌:每次激活需输入路径,不如全局环境名方便。

总结

  • 默认情况‌:环境是全局的,激活位置不影响环境本身。
  • 最佳实践‌:在项目目录下激活环境,保持工作目录清晰。
  • 环境存储位置‌:通过 conda env list 查看所有环境及其路径。

虚拟环境后就是安装依赖文件 

# 安装单个包
conda install numpy pandas

# 根据 requirements.txt 安装(需文件内包名与 conda 仓库匹配)
conda install --file requirements.txt
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity数字工匠

难题的解决使成本节约,求打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值