在虚拟机里装 Anaconda,成败往往不在安装那一步,而在三件前置小事给虚拟机留够内存和磁盘、装完用 sha256 校验安装包、初始化用 conda init 而不是手动往 PATH 里塞路径。这三步做对了,后面创建环境、跑 Jupyter、装深度学习框架基本一路顺;做错了,最常见的结局是命令行里 conda 一会儿有一会儿没有,或者磁盘被虚拟磁盘文件悄悄吃光。
下面按“为什么装、怎么装、装完怎么用、坑在哪”的顺序说清楚。
为什么要把 Anaconda 放进虚拟机
适合这么干的几类人
把数据科学环境关进虚拟机,本质上是用一点性能换一份“随便折腾也不怕”的安全感,下面这些场景,虚拟机方案确实划算:
- 要在 Windows 上用 Linux 生态的工具链:很多生信、编译类包在 Linux 下体验明显更顺,装个 Ubuntu 虚拟机比折腾双系统省心。
- 多个项目依赖互相打架:老项目要 Python 3.7,新项目要 3.12,虽然 conda 环境能隔离大部分,但系统级依赖(CUDA、编译器等)还是会冲突,一台虚拟机一个“世界观”更干净。
- 做教学演示或给别人复现环境:装好就打个快照,出问题一键回滚,比在真机上卸载重装快得多。
- 公司电脑权限受限:没有管理员权限装不了系统级软件,但装个 VirtualBox 通常没问题。
什么情况下其实不用虚拟机
如果你的需求只是“不同项目用不同 Python 版本”,conda 自带的虚拟环境就够了,没必要上虚拟机,多一层开销,WSL2 在 Windows 上属于轻量虚拟化,跑 conda 比完整虚拟机快不少,日常开发可以优先考虑。
行业共识认为,环境隔离的粒度应该跟着“系统级依赖差异”走,而不是跟着“项目数量”走,项目多不等于要开多台虚拟机。
装之前先分好资源
内存、磁盘、CPU 给多少合适
给少了会卡,给多了宿主机难受,参考下面这个区间,按自己机器实际情况调整:
| 使用场景 | 内存建议 | 虚拟磁盘 | CPU 核心 |
|---|---|---|---|
| 只跑 Python 脚本、Pandas 分析 | 4 GB 起 | 40 GB | 2 核 |
| 跑 Jupyter、机器学习入门 | 8 GB 起 | 60 GB | 2-4 核 |
| 装 PyTorch/TensorFlow 训练小模型 | 16 GB 起 | 80 GB 以上 | 4 核 |
几个常被忽略的点:
- Anaconda 本体安装完约占 3-5 GB,但每建一个环境还要再吃 1-3 GB,缓存目录
pkgs也会不断变大,磁盘别卡着最低线给。 - 虚拟磁盘别开“精简置备后永不回收”,用久了
.vmdk/.vdi文件只涨不缩,定期用conda clean -a清缓存。 - 如果是 VMware,建议装 VMware Tools;VirtualBox 装增强功能包,共享文件夹和剪贴板才好用。
国内下载慢的现实问题
据清华开源软件镜像站公开说明,Anaconda 官方源在国内访问速度波动较大,装大包时经常卡在下载阶段,两个办法:
- 下载安装包时走国内镜像,例如清华镜像站的
anaconda/archive目录,通常比官网快不少。 - 安装完成后立刻配
.condarc换源,把pkgs/main、pkgs/r指向国内镜像。
需要说明的是,镜像站会定期同步,个别冷门包可能还没同步过来,遇到 PackagesNotFoundError 时可以临时切回官方源试一次。
虚拟机中 Anaconda 环境配置教程:从下载到跑通第一个环境
第一步:下载与校验
以 Linux 虚拟机为例,官网或镜像站下载 Anaconda3-20xx.xx-Linux-x86_64.sh,下载完别急着执行,先校验:
sha256sum Anaconda3-.sh
把结果和官网公布的 SHA256 值比对,Windows 下用 certutil -hashfile 文件名 SHA256,这一步看着多余,但能排掉下载中断导致的“安装到一半报解压错误”。
第二步:执行安装
bash Anaconda3-20xx.xx-Linux-x86_64.sh -b -p $HOME/anaconda3
-b 是静默安装,-p 指定路径。强烈建议装在用户主目录下,不要装到 /opt 或 /usr/local,否则后面所有 conda 命令都得加 sudo,权限问题会一路跟着你。
Windows 虚拟机里就是双击 exe,注意两点:安装路径不要含中文和空格,不要勾选“Add Anaconda to my PATH environment variable”,让它用自带的 Anaconda Prompt。
第三步:初始化 shell
$HOME/anaconda3/bin/conda init bash source ~/.bashrc
conda init 会往 .bashrc 里写一段带标记的初始化代码,这是官方推荐方式,手动写 export PATH=/home/xxx/anaconda3/bin:$PATH 的后果是:系统自带的 Python、pip 会被悄悄盖掉,某些依赖系统 Python 的工具直接崩。
验证一下:
conda --version which python
which python 应该指向 anaconda3/bin/python,说明生效了。
第四步:换源并建第一个环境
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes conda create -n demo python=3.11 -y conda activate demo
装完 conda env list 看一眼环境列表,conda deactivate 退出,到这一步,虚拟机里的 Anaconda 就算真正可用了。
Anaconda 和 Miniconda 在虚拟机里选哪个好
这个问题问得很多,尤其虚拟机磁盘不算宽裕的时候,两者的差别说白了就是“要不要预装那一大堆包”。
| 对比项 | Anaconda Distribution | Miniconda |
|---|---|---|
| 初始体积 | 约 3-5 GB | 约 500 MB |
| 预装包数量 | 数百个,含 NumPy、Pandas、Jupyter 等 | 只有 conda、Python 和基础依赖 |
| 适合人群 | 刚入门、想开箱即用 | 清楚自己要什么都装什么 |
| 虚拟机磁盘压力 | 较大 | 很小 |
| 后续装包 | 照样要自己 conda install |
一样 |
业内专家指出,Anaconda 预装的包里有相当一部分日常用不到,真正高频的就那十几个,所以如果你的虚拟机磁盘按 40 GB 给,用 Anaconda 没问题;如果给小了,Miniconda 加按需安装反而更清爽,注意 Miniconda 默认走 repo.anaconda.com,安装后同样要配 .condarc 换源。
虚拟机安装 Anaconda 要注意什么
快照、磁盘膨胀和共享文件夹
- 装完立刻打快照,名字写清楚,anaconda-clean-install”,后面环境搞乱了直接回滚,比
conda修依赖快十倍。 - Linux 虚拟机扩容后别忘了扩文件系统,磁盘从 40 GB 改到 80 GB 只是硬件层生效,还要
growpart加resize2fs,否则df -h看到的还是老容量。 - 共享文件夹的权限,VirtualBox 共享目录默认属于
vboxsf组,普通用户读不了,需要sudo usermod -aG vboxsf $USER后重新登录,直接把 conda 环境建在共享目录里也不推荐,跨文件系统的符号链接容易出问题。
PATH 冲突与时间漂移
两个隐蔽但高频的坑:
- PATH 污染。
.bashrc里同时存在手动加的 export 和conda init写的块,conda的行为会变得难以预测,检查办法是grep -n anaconda ~/.bashrc,发现有重复的手动 export 就删掉。 - 虚拟机挂起后再恢复,SSL 证书报错,典型报错是
CondaSSLError,根因是虚拟机时间漂移导致证书校验失败,解法是开启 VMware Tools 或增强功能包的时间同步,或手动sudo ntpdate -u ntp.aliyun.com。
日常使用:几个真正高频的操作
conda 命令速查
- 建环境:
conda create -n 名字 python=3.11 - 激活 / 退出:
conda activate 名字/conda deactivate - 看环境:
conda env list - 看已装包:
conda list - 导出 / 复现:
conda env export > env.yml,换机器conda env create -f env.yml - 删环境:
conda remove -n 名字 --all - 清缓存:
conda clean -a
虚拟环境和虚拟机的区别别搞混
这是新手最容易含糊的地方,虚拟机隔离的是整个操作系统,conda 环境隔离的是 Python 解释器和包目录,两者的关系是包含关系:一台虚拟机里可以有几十个 conda 环境,互不干扰,但它们共用同一个内核和系统库,CUDA 驱动的版本冲突 conda 环境解决不了,那得靠虚拟机层面隔离。
没有图形界面时怎么跑 Jupyter
服务器版 Linux 虚拟机通常不带桌面,启动 Jupyter 后默认不允许远程访问,两种做法:
jupyter notebook --no-browser --ip=0.0.0.0 --port=8888
或者在宿主机用 SSH 端口转发 ssh -L 8888:localhost:8888 用户名@虚拟机IP,浏览器访问 localhost:8888,后者更安全,不用开放端口。
Anaconda 商业使用要不要付费
这个问题容易被忽略,Anaconda Distribution 本身对个人使用免费,但自 2020 年起调整了服务条款,组织规模较大的商业机构使用默认仓库需要付费订阅,很多公司因此转向 conda-forge 社区源或 Miniforge,如果是在公司电脑的虚拟机里搭环境,建议先和 IT 或法务确认一下授权口径,再决定要不要配置 conda-forge,个人学习、教学用途不受影响。
关于虚拟机安装 Anaconda 的常见问答
问:虚拟机里 Anaconda 安装完,命令行还是提示 conda 不是内部或外部命令,怎么办?
先确认是否执行过 conda init 并重新打开终端,Windows 下用 Anaconda Prompt 而不是系统 CMD;Linux 下执行 source ~/.bashrc 后 which conda 看有没有输出,若仍无输出,检查安装路径是否含空格或中文。
问:虚拟机里同时装 Anaconda 和系统自带 Python 会冲突吗?
正常用 conda init 初始化的方式不会,冲突通常来自手动改 PATH、或在系统 Python 的 site-packages 里装过包,判断办法是 which python 和 python -c "import sys; print(sys.prefix)",后者指向 anaconda3 就说明当前用的是 conda 的 Python。
问:虚拟机里装好 Anaconda 后宿主机剪贴板不通、文件传不过去,影响使用吗?
不影响 conda 本身,但影响效率,VMware 装 VMware Tools、VirtualBox 装增强功能包即可解决剪贴板共享;文件传输优先用共享文件夹或 scp,不要用拖拽,大文件拖拽容易中途卡死。