Windows上配置完整Linux开发环境(二):Linux发行版Anaconda安装与使用
1、什么是环境
在软件开发和计算机科学领域,"环境"通常指的是一个包含软件和配置的容器,提供了一个特定的运行环境或工作环境。环境可以涉及多个层面,包括硬件环境、操作系统环境和软件环境。
1.1、硬件环境
包括计算机的物理硬件,如CPU(X86、ARM、RISC架构)、GPU、内存、硬盘等。不同的硬件环境可能影响软件的性能和可用性。
1.2、操作系统环境
操作系统是计算机硬件和软件之间的桥梁,提供了基本的服务和资源管理。不同的操作系统(如Windows、macOS、Linux、HarmonyOS等)提供不同的用户接口和系统调用,影响了软件在其上运行的方式。
1.3、软件环境
这包括在特定系统上安装的软件、库和工具。软件环境的配置可能对应用程序的运行和开发产生重要影响。开发者通常需要创建一个独立的软件环境,以确保项目的依赖项得到满足。
总的来说,"环境"是一个涵盖硬件、操作系统和软件的概念,用于提供一个特定的工作或运行条件。在不同的上下文中,这个词可能有不同的含义。我们的硬件和操作系统相对固定,因此编程中我们所说的环境一般指软件环境。
2、为什么需要Anaconda或Miniconda
问题1、运行某个GitHub项目时,作者使用的python2.7.0,而你电脑上安装的python3.8,该卸载python重新安装?
问题2、在进行时,你是否碰到过以下报错
① numba 0.54.1 requires numpy<1.21,>=1.17,but you have numpy 1.21.5 which is incompatible.(库与库之间不兼容)
② AttributeError: type object 'Callable' has no attribute '_abc_registry'(python版本太低)
③ ModuleNotFoundError: No module named ‘utils‘(使用了错的python版本)
因此我们需要一个能够创建不同软件环境的工具,并且这些环境之间不互项影响,还可以让我们下载不同版本的库和工具。那么一个开源的包管理系统和环境管理系统 Anaconda 和 Miniconda 应运而生。
3、什么是Anaconda和Miniconda
3.1、一图以蔽之
3.2、Anaconda
Anaconda是python编写的一个用于科学计算、数据分析和机器学习的开源发行版,它包含了一系列常用的Python库和工具,以及一个强大的包管理系统。其主要特点和组件包括:
① Conda:是Anaconda提供的包管理工具,用于安装、更新、卸载软件包,以及创建、导出、列出和移除环境。Conda还可以跨平台工作,支持Windows、macOS和Linux。
② Python:Anaconda默认安装了最新版本的Python解释器。
③ Anaconda Navigator:是一个图形用户界面,提供了可视化的方式来管理和操作Anaconda环境、包、虚拟环境以及其他与数据科学和机器学习相关的工具。通过Anaconda Navigator,用户可以轻松地启动Jupyter Notebook、Spyder、QtConsole等工具,也可以创建、管理和切换虚拟环境。Navigator的直观界面使得对Anaconda的管理更加方便和可视化。
④ Jupyter Notebook:一个交互式的笔记本界面,支持代码、文本和图形的混合编辑和执行。Jupyter Notebook是进行数据分析和可视化的强大工具。
⑤ Spyder:一个用于科学计算和数据分析的集成开发环境(IDE)。
⑥ NumPy、pandas、Matplotlib、scikit-learn、SciPy:用于科学计算和可视化数据的库,提供多维数组对象和各种计算功能。
⑦ IPython:一个强化的Python交互式解释器,增强了代码的交互性和可读性。
3.3、Miniconda
Miniconda相当于Anaconda的简化版,只提供了以下组件:
① Conda:是Anaconda提供的包管理工具,用于安装、更新、卸载软件包,以及创建、导出、列出和移除环境。Conda还可以跨平台工作,支持Windows、macOS和Linux。
② Python:Anaconda默认安装了最新版本的Python解释器。
4、在Linux发行版中安装Conda
在Anaconda官网选择合适的版本,复制下载链接。
## 手动安装(可指定安装路径)
1、Win+R,输入cmd打开命令行
2、输入wsl 进入Linux发行版
3、当前目录是挂载到c盘的,更改当前用户的主目录
cd ~
如果是root用户进入的是/root/如果以bob用户登陆,进入的是用户的主目录,即/home/bob/
4、根据链接下载Anaconda或Miniconda安装包
wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
5、运行安装包
bash Anaconda3-2023.09-0-Linux-x86_64.sh
6、不要一直Enter!!最后几步会问是否同意许可协议(按Enter就默认No),选择Yes。
7、最后 Anaconda 官网建议您输入“yes”来初始化 Anaconda Distribution 。
8、安装完后输入conda --help,显示conda用法则安装成功
## 自动安装(默认当前路径)
bash Anaconda3-2023.09-0-Linux-x86_64.sh -b
将以下内容写入用户.bashrc中
__conda_setup="$('/root/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/root/anaconda3/etc/profile.d/conda.sh" ]; then
. "/root/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/root/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
详细参考:在Linux 安装了Anaconda
5、Conda 常用命令
conda –V # 查看conda版本
conda --help/-h # 查看帮助
conda update conda # 更新 conda
conda update -n base -c defaults conda # 更新 conda 软件
conda search <package_name> # 搜索可用的所有版本包
conda env list # 查看所有虚拟环境
conda create --name <virtual env name> # 创建虚拟环境
## conda create --name py37 python=3.7 numpy pandas
conda create --name <new_env_name> --clone <old_env_name> # 复制环境
conda remove --name <virtual env name> --all # 删除环境及环境中的所有库
conda install --name <env_name> <package_name> # 在指定环境中安装包
conda update <package_name> # 更新当前环境中的包
conda remove <package_name> # 移除当前环境中的安装包
conda remove -n <env_name> <package_name> # 移除指定环境中的安装包
conda activate <virtual env name> # 激活环境
conda detactive <virtual env name> # 退出环境
conda install package # 安装指定库
conda list # 列出该环境已安装的包
conda clean --all # 移除包缓存、索引、Lock文件
conda env export > my_env.yml # 导出环境配置文件
conda env export -n myR > my_env.yml # 导出指定名称的环境
conda env export --no-builds > environment.yml # 使用 no-builds 选项(更通用)
conda env create -f my_env.yml # 根据配置文件安装环境
# 示例:创建myR环境
conda create -n myR r-base
# 示例:清除myR环境
conda remove --name myR --all
6、卸载Anaconda
conda install anaconda-clean
anaconda-clean --yesrm -rf ~/anaconda3
详细参考:Anaconda官方文档和Conda常用命令大全
7、conda vs mamba
mamba 不是 conda 的子包,而是 conda 的“替代求解器/替代客户端”,可以理解成“更快版本的 conda”。mamba 用 C++ 重写了依赖求解(SAT),使用方法与 conda 一模一样。
可以这样理解:
| 组件 | 类比 |
|---|---|
| conda | 传统导航系统(慢但稳),python 写的 solver |
| mamba | 同一地图 + 高性能引擎(快很多),C++写的solver,并行高性能依赖解析 |
| libmamba | mamba 的核心引擎 |
conda install -n base -c conda-forge mamba # 安装 mamba 到 conda base 环境
以后分工:
| 场景 | 用谁 |
|---|---|
| 创建环境 | conda |
| 装复杂包(shap / pytorch / xgboost) | mamba ⭐ |
| 简单包 | conda 或 pip |
或者给 conda 设置 solver 为 libmamba
conda install conda-libmamba-solver -n base -c conda-forge
conda config --set solver libmamba
注意!!
mamba = conda 的“替代执行器”
在使用层面可以做到替代 conda,但本质上 mamba 仍在调用conda 的环境结构,依赖 conda 的package 体系!!
8、高级用法
8.1、指定版本文件,一次性解决所有包兼容问题
conda create \
--prefix "$HOME/conda_envs/tabnet-py38" \
python=3.8 \
pytorch=1.8.2 \
torchvision=0.9.2 \
torchaudio=0.8.2 \
cudatoolkit=11.1 \
numpy=1.23.5 \
pandas=1.5.3 \
scipy=1.10.1 \
scikit-learn=1.3.2 \
shap=0.44.1 \
pytorch-tabnet=4.1.0 \
-c pytorch-lts \
-c nvidia \
-c conda-forge \
-c defaults \
--dry-run # 先看是否可以结局,可以的话把这个参数去掉
8.2、conda 环境搬家神器(另一台计算机)
它会自动把所有硬编码路径替换成占位符
# 1. 在旧机器上安装打包工具
conda install conda-pack# 2. 打包环境(比如打包名为 myenv 的环境)
conda pack -n myenv -o myenv.tar.gz# 3. 把 myenv.tar.gz 拷贝到新机器
# 4. 在新机器上解压到目标目录(比如 /opt/conda/envs/myenv)
mkdir -p /opt/conda/envs/myenv
tar -xzf myenv.tar.gz -C /opt/conda/envs/myenv# 5. 激活它(正常激活即可)
conda activate myenv
8.3、环境克隆到同一电脑的另一路径
conda create -p /home/user/env2 --clone /home/user/env1
8.4、导出 environment.yml(最干净,但需要联网,且要重新编译,较慢)
conda env export > env.yml
# 拷到新机器,在新机器重装
conda env create -f env.yml -p /new/path/to/env