来源:网络
很多时候,我们使用pip安装第三方库的时候,总是会出现各种各样的问题。比如安装PyTorch GPU 版,经常会遇到显卡驱动不兼容、CUDA 版本不对等各种报错,极其磨人。比如安装GDAL包时总是报错缺少 PROJ 和 GEOS等库。但是这些问题用conda install xxx 往往能完美解决。为什么呢?
用两个例子来解释一下二者装包时的差异,立马就能让你明白,conda的优势。
gdal 安装
当 pip install gdal 时,pip 做的事情是:
下载 GDAL 的 Python 源代码包(或者一个很基础的预编译包),尝试在电脑上现场编译(Build)。
但GDAL 是个地图库,它底层依赖大量的 C++ 库、PROJ 库、GEOS 库。
pip 找不到依赖,直接报错,甩给你一堆红字让你看不懂。你得自己去下载各种乱七八糟的安装包,配置环境变量,折腾一天都未必能好。
当 conda install gdal 时,conda 做的事情是:
PyTorch GPU 版
pip 安装:
它只管装 Python 包。
显卡驱动:你得自己装。
CUDA Toolkit(显卡计算工具包,好几 GB):你得自己去 NVIDIA 官网下载对应版本安装。
cuDNN(深度学习加速库):你得手动解压复制到系统文件夹。
结果就是,只要版本号对不上(比如 PyTorch 要 CUDA 11.8,你装了 12.1),代码立马跑不起来。
Conda 安装:
只需要一条命令:conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch(这里只是举例,具体安装指令需要到官网,根据你要安装的那个版本复制安装命令。)
conda 会自动帮你安装好 CUDA Toolkit 和 cuDNN!
它把这些工具包都塞在 Conda 的环境文件夹里,完全不需要你碰系统显卡驱动。
| | |
| | requests, flask, django, scrapy(这些库没有底层 C++ 依赖,pip 秒装,版本也最新) |
| | gdal, rasterio, netcdf4, tensorflow(这种涉及科学计算、二进制文件的,conda 装更快) |
| | pytorch, cudatoolkit(conda 自动解决显卡环境配置,pip 需要手动折腾) |
我的建议是装 Miniconda,它体积小,只带Python和Conda,想装什么自己装,不占多余空间。而Anaconda非常大,自带了很多预装的包,可能有些你还用不到,非常占硬盘,而且每次启动都巨慢巨卡。
安装方式:直接到官网下载安装。
安装时有几个勾选项这里介绍一下:
Create shortcuts (创建快捷方式)
建议:勾选。
方便在开始菜单找到 “Anaconda Prompt (miniconda3)”,这是操作 conda 命令的地方。
Add Miniconda3 to my PATH environment variable
建议:勾选!(如果有这个勾选框)
虽然它会弹出一个红色警告说“Not recommended”(不推荐),但勾选它才能在 cmd 和 PowerShell 里直接用 conda 命令,否则每次都要去开始菜单找专用终端,太麻烦了。
注意:如果你电脑里原本装了一个Python解释器(假设是3.12版的),这个勾选之后,PATH 里可能会有两个 Python,谁在上面谁就是老大。如果 Python 在上面,cmd 输入 python 就是 3.12;如果 Miniconda(假设自带的Python是3.13版的) 在上面,cmd 输入 python 就是 3.13。你可以装完后去系统变量里根据你的需求手动调整一下顺序。
Clear package cache
建议:勾选。
这会清理安装过程中的临时缓存文件,省空间。
Register Anaconda as my default Python
这会让 Miniconda 成为你电脑的默认 Python,就跟你设置默认浏览器一个意思。
建议:看情况,如果以后偏向于用conda就勾,用自己下载的Python解释器多就不够。
安装好后记得修改国内镜像源(Anaconda 默认服务器在国外,下载包很慢。)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/conda config --set show_channel_urls yes
安装成功后打开开始菜单,会发现它没有各种软件图标,和那些点点点就能操作的界面,只有两个黑框框(conda的专用终端),因为Miniconda 为了省空间默认不装。当然,需要的话自己装就是一条命令的事。例如,我们要装Jupyter Notebook。
conda install jupyter notebook
输入 y 确认,很快就能装好。装好后打开开始菜单可以看到jupyter notebook的软件图标,点击它启动,或者在Anaconda Prompt里输入 jupyter notebook 启动。
1. 创建环境
# 基本格式conda create -n 环境名 python=版本号# 常用示例conda create -n myproject python=3.12conda create -n pytorch_gpu python=3.10conda create -n gdal_test python=3.9
细节说明:
-n 是 name 的缩写,后面跟你起的环境名字(建议用英文,别用中文)。
python=3.12 指定 Python 版本,这个版本是独立于系统的,也就是说可以同时存在 Python 3.12、3.10、3.9 的多个环境互不干扰。
创建过程中会问你 Proceed ([y]/n)?,输入 y 回车确认。
可以在创建时就直接装包:conda create -n myenv python=3.12 numpy pandas
2. 查看所有环境
conda env list# 或者conda info --envs
注意:带 * 号的是当前激活的。每个环境其实就是一个文件夹,存在 ...\Miniconda3\envs\ 下面。删环境直接删文件夹也行(但不推荐,用命令删更干净)。
3. 激活环境
激活后的变化:
(base) C:\Users\86155> <-- 激活前,显示 base(默认环境)conda activate pytorch_gpu(pytorch_gpu) C:\Users\86155> <-- 激活后,前面变成了环境名!
退出 / 关闭环境
# 退出当前环境,回到 baseconda deactivate
5. 删除环境
# 先退出要删除的环境!conda deactivate# 然后删除conda remove -n 环境名 --all# 示例conda remove -n gdal_test --all
在环境里装包
激活环境后,装包就只在那个环境里生效:
# 先激活conda activate pytorch_gpu# 用 conda 装(推荐重型库用这个)conda install numpy pandas# 用 pip 装(纯 Python 库用这个)pip install requests flask# 离开环境后,这些包就"消失"了(其实还在那个环境文件夹里)conda deactivate
注意:为什么能用pip装包呢?假如我系统上原本装了一个Python解释器,不会将包装进那个Python吗?
当你激活了一个 Conda 环境后,那个环境里的 pip 和 python 都是该环境自己的,跟你系统上原来装的 Python 没有任何关系。每个环境都是完全独立的,里面有各自的 Python 和 pip!
...\Miniconda3\envs\pytorch_gpu\ <-- 环境 ├── python.exe <-- 它自己的 Python ├── Scripts/ │ ├── pip.exe <-- 它自己的 pip │ └── ... └── Lib/ └── site-packages/ <-- 包装在这里!
输入 conda activate xxx 激活环境时,Conda
它临时修改了你的 PATH 环境变量,把这个环境的路径提到了最前面,如下图所示:(where 命令会列出所有同名程序,排在第一位的就是系统实际调用的那个!)
所以当你输入 pip 时,系统使用的是第一个路径里的 pip.exe,不会走到你原来的 Python 那里去。
总结:激活了哪个环境,python 和 pip 就是那个环境的,包装在那个环境的 site-packages 里,跟你原来的 Python彻底无关。
7. 导出和复现环境
# 把当前环境的所有包信息导出为一个文件conda activate pytorch_gpuconda env export > environment.yml# 别人拿到这个文件,一键复现完全相同的环境conda env create -f environment.yml