首先, 选择 Anaconda3 还是 Miniconda 主要取决于您的具体需求和使用场景。

Anaconda3 vs Miniconda 对比

Anaconda3Miniconda
安装包大小大(~500MB)小(~30MB)
包含包数量1500+基本包(Conda, Python)
安装复杂度简单,开箱即用需要手动安装包
包管理工具包含 Anaconda Navigator(图形界面)仅包含 Conda(命令行)
性能优化包含优化包(如 Intel MKL)不包含优化包
灵活性包含预装包,较固定灵活,用户自主选择包
适合用户初学者,数据科学全能用户有经验的用户,资源有限的系统

推荐理由

选择 Anaconda3:

  • 初学者希望快速搭建数据科学环境。
  • 需要包含大量预装包的开箱即用环境。
  • 不介意较大的安装包和磁盘空间占用。

选择 Miniconda:

  • 有经验的用户,希望完全掌控包和环境。
  • 系统存储空间有限,安装时间紧迫。
  • 只需要一些特定的包,不希望安装冗余的包。

Anaconda3的安装

1.下载安装包

根据系统类型选择适合的安装包下载,国内用户可以使用清华大学镜像站点下载(速度比官网快很多)

清华大学镜像站点

访问清华大学镜像点这里

下面是Anaconda3-2024.02-1版本安装包链接:

下载方式
Windows下载地址
MacOS下载地址
Linux下载地址(x86_64):
Linux下载地址(aarch64)
Linux下载地址(arm64)
Linux下载地址(ppc64le)

Anaconda官方站点

安装Anaconda

Windows/MacOS三个系统的安装过程都是图形化界面,一步步操作就可以完成安装。

Windows

MacOS

Linux安装过程就是通过命令行方式完成安装:

bash
1
2
3
4
5
6
7
8
9
curl -O https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh

# 或者wget命令
wget -c https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh


# 安装

bash ./Anaconda3-2024.06-1-Linux-x86_64.sh

安装建议:

  • Anaconda安装在磁盘空间较大(50GB以上)的分区,如果你的虚拟环境创建越多,占用空间就越大。
  • 合理创建虚拟环境,尽量不要所有安装包都安装在base环境中,否则迁移环境时你可能忘记哪些安装包需要迁移。

升级Anaconda到最新版本

参考地址 更新Anaconda到最新版本方法

从个人经验来说,升级Anaconda的方法是重新安装,以Linux系统中安装在 /devel/anaconda 目录为例介绍操作过程:

  1. 备份原环境:mv /devel/anaconda /devel/anaconda.bak
  2. 安装新环境: 方法如上,使用脚本安装:bash ./Anaconda3-2024.06-1-Linux-x86_64.sh,选择安装在/devel/anaconda目录下。
  3. 迁移虚拟环境: 将envs目录虚拟环境移动到新版本中: mv /devel/anaconda.bak/envs/* /devel/anaconda/envs/

配置Anaconda的Kernel环境

编写代码时最好是可以实时看到代码运行结果是否符合预想,而如果你的项目里有很多代码,每次运行可能需要很多时间,而Jupyter kernel运行环境可以为我们提供会话交互式的代码编写环境,极大的方便了代码编写过程中的功能验证,并且可以及时的调整非预期结果。

Jupyter Kernel 支持很多编程语言: Python/Go/Fortran/ruby/nodejs/Typescript/R/C#/F#/Erlang/Perl/Scala/Matlab/Lua/C/C++等等。

每种语言如何安装及配置都汇总在Jupyter kernels 支持的语言环境列表中了。

创建虚拟环境并在jupyterlab配置kernel环境:

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 创建虚拟环境 #
conda create --name pyenv python=3.10

# 首先激活虚拟环境
conda activate pyenv

# 安装需要软件
conda install ipython jupyterlab

## 安装中文包
conda install -c conda-forge jupyterlab-language-pack-zh-CN

# 如果在 base 主环境中已经安装了 jupyterlab,那么可以只需要安装 ipykernel
pip install ipykernel

# 在虚拟环境安装 jupyter kernel,并命名
python -m ipykernel install --user --name pyenv --display-name "Python3(pyenv)"

# 在主环境中打开 jupyterlab
conda deactivate

# 注意这里尝试退出虚拟环境,并进入到主环境,主环境以 base 显示,如果没有显示任何环境名,可以使用如下命令进入主环境
conda activate
# 打开 jupyterlab
# jupyterlab

# 启动 Jupyter-notebook(先设置工作环境目录)
work_path=/path/to/jupyter-notebook-home
nohup jupyter-notebook --ServerApp.root_dir=${work_path} --ip=127.0.0.1 --port 8080  --no-browser > /dev/null 2>&1 &

# 主题安装
pip install jupyterthemes
# conda install -c conda-forge jupyterthemes

为了方便管理你的notebook,建议单独新建一个目录管理所有的notebook,替换上面的/path/to/jupyter-notebook-home路径。

卸载不想要的 jupyter kernel

bash
1
2
3
jupyter kernelspec list

jupyter kernelspec uninstall delete_env_name

Anaconda环境问题解决

ipynb文件过大,导致加载慢

加载慢大多是因为 ipynb 运行结果多导致的,可以尝试清空每个单元格的结果。通过命令行,可以实现:

# 保留原 ipynb,导出一个没有输出结果的 ipynb
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to notebook --output=NotebookNoOut large_ipynb.ipynb

# 直接清空 ipynb 的输出结果
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace large_ipynb.ipynb

环境移植

从开发环境部署生产环境或者迁移到新主机时,需要重新搭建环境。那么,此时就会涉及到运行环境的依赖移植。

纯 pip 安装的包环境移植

bash
1
2
3
4
5
6
# 提取开发环境的依赖包列表(假如你有多个项目在同一个环境开发,可能导出一些不需要的依赖包信息)
# 因此建议开发时手动创建编辑 requirements.txt 依赖
pip list --format=freeze > requirements.txt

# 在新环境安装依赖方法
pip install -r requirements.txt

纯 conda 安装包环境移植

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 切换到需要移植的虚拟环境
conda activate <venv>

# 把环境信息写入环境配置文件
conda list --export > requirements.txt
# or
conda list -e > requirements.txt

# 新环境安装依赖方法
conda create --name <venv> --file requirements.txt

conda 和 pip 混合安装包环境移植

bash
1
2
3
4
5
6
7
8
# 切换到需要移植的虚拟环境
conda activate <venv>

# 把环境信息写入环境配置文件
conda env export > environment.yaml

# 新环境安装依赖方法
conda env create -f environment.yaml

移植到无网络环境机器上

前面介绍的都是依赖信息的提取,然后在新环境中通过网络下载依赖包安装。但一些生产环境是不能链接互联网的,只能将依赖包整体打包后移植到新环境。

移植也分如下情况:

  • 同构环境:比如同是X86_64架构环境,此时移植简单。
  • 异构环境:开发环境是X86_64结构,生产环境是ARM架构,此时就无法直接移植。

虽然pip支持下载安装包的--platform设置平台选项,但并不是所有依赖包都支持这个选项。

异构移植方法

  1. 找一个与目标架构主机相同,且链接外网的主机系统A。
  2. 在A系统中下载依赖包,并打包安装包。
  3. 将安装包传输到目标主机系统中,安装这个安装包。
bash
1
2
3
4
5
6
7
8
venv_name="myenv"
# 在与目标主机同架构系统中 下载安装包到 packages 目录
python -m venv $venv_name
source $venv_name/bin/activate 
pip download -r requirements.txt -d packages

# 压缩打包
tar -czvf env_and_packages.tar.gz $venv_name packages requirements.txt

接下来将打包的文件传输到目标系统(比如SCP/FTP等网络传输方法),传输到目标系统后,开始安装:

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
venv_name="myenv"
# 解压
tar -xzvf env_and_packages.tar.gz

# 此时得到的 $venv_name 环境目录和安装包

#先激活新的虚拟环境
source $venv_name/bin/activate 

# 重新安装依赖包解决各种问题 --no-index选项表示不从PyPI下载包,--find-links=packages选项指定本地包的路径。
pip install --no-index --find-links=packages -r requirements.txt

此时,虚拟环境前已完成,可以运行项目代码了。

同构迁移方法

相比异构迁移方法,少了更换一个中间系统的过程,但下载依赖包、打包传输、安装的过程是一样的,这里就不再详述了。