[SOP]搭建多版本Python工作流-包管理以conda为主pip为辅
[SOP]搭建多版本Python工作流-包管理以conda为主pip为辅
目标:[SOP]搭建多版本Python工作流-包管理以conda为主pip为辅
使用无商业利益相关的:Miniforge
1、前置说明
1、最佳实践
Conda 有自己的包管理系统,比 pip 更强大(支持二进制包、非Python依赖),但在同一环境中可以与 pip 配合使用。关键是理解两者的区别,按正确的顺序和场景使用。
- 优先使用 Conda:特别是科学计算、机器学习包
- Conda-first原则:创建环境时先用conda安装
- 最小化pip使用:只在必要时用pip
- 固定版本:生产环境固定所有包版本
- 测试环境:创建后测试关键功能
- 文档化:记录为什么某些包用pip安装
# 1、示例工作流
conda create -n project python=3.11
conda activate project
conda install numpy pandas matplotlib scikit-learn jupyter
conda install -c conda-forge tensorflow
# 2、只有conda没有的包才用pip
pip install some-special-package
# 3、导出conda
conda env export > environment.yml2、使用conda的相关网站
Anaconda 和 Miniconda 是一个公司的产品,商用是付费的,个人暂时免费;
Anaconda:https://www.anaconda.com/
- “在200名以上员工的组织中使用Anaconda产品需要商业或企业许可证”
- 下载anaconda历史版本:https://repo.anaconda.com/archive/
Miniconda:
- https://www.anaconda.com/docs/getting-started/miniconda/main
- Miniconda是Anaconda Distribution的免费微型安装,仅包括conda、Python
- 下载miniconda历史版本的地方:https://repo.anaconda.com/miniconda/
Miniforge:https://github.com/conda-forge/miniforge
- Miniforge是由社区主导,用GitHub托管,完全免费。
- Miniconda 和 Miniforge 是差不多的产物,mini代表着轻量化,
- 国内下载:https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/
有的公司离线无法连外网:优先购买Anaconda,当然Anaconda和Miniconda的许可,需要记得别惹上官司(对公司来说)
建议使用:Miniconda
2、Miniforge下载安装(命令最后也设置Miniforge的默认载入)
- github下载:https://github.com/conda-forge/miniforge/releases
- 如果github上不去就去这里:国内下载:https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/
直接bash执行脚本,然后一路yes,他会自动配置环境变量
3、安装好Miniforge后先给conda换源
在 Conda 中查看和更换源(镜像源)
查看当前已配置的源
# 查看所有已配置的源
conda config --show channels
# 或查看配置文件内容
conda config --show-sources
# 直接查看配置文件
cat ~/.condarc # Linux/Mac
type ~/.condarc # Windows
比如
(base) ➜ ~ conda config --show channels
channels:
- conda-forge
(base) ➜ ~ conda config --show-sources
==> /Users/waywho/miniforge3/.condarc <==
channels:
- conda-forge
==> /Users/waywho/.condarc <==
channels:
- conda-forge
(base) ➜ ~ vi /Users/waywho/.condarc
(base) ➜ ~ cat /Users/waywho/.condarc
channels:
- conda-forge
mirrored_channels:
conda-forge:
- https://conda.anaconda.org/conda-forge
- https://prefix.dev/conda-forge换源
# 添加清华源, 这些命令的本质是将内容写到.condarc文件里面去了!
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes如果换源后还有SSL问题
# 在命令中临时设置, 本质也是将内容写到.condarc文件里面去了!
conda config --set ssl_verify false
# 清除所有缓存
conda clean --all
# 或者只清除索引缓存
conda clean -i
# 再尝试更新
conda update conda4、做AI的conda和最基础的python
比如我【做AI的】安装的python的基为3.12,但是我只需要3.9或者3.11.13
原因是,官网的 python3.9 的安装 d2l 报错,好像是 M1 的 pandas 编译不了,需要 x86 的【但是最好别 arm 和 x86 混用】
然后 python3.13 又好像版本高,反正我的跑不动,最后选择:python3.11.3
(base) ➜ ~ python --version
Python 3.12.12
(base) ➜ ~ conda create --name d2l python=3.11.13 -y
# 如果想要删除
conda remove --name d2l --all
(base) ➜ ~ conda activate d2l
(d2l) ➜ ~ python --version
Python 3.11.13写shell的alias来快捷启用d2l或者弃用
alias d2l='conda activate d2l'
alias condadeactivate='conda deactivate'5、主要使用conda安装包,实在找不到才用pip
有个坑,你可能会问:conda里面的pip安装是不是会继承conda的换源?
不会完全继承。Conda和pip的源配置是相互独立的:
Conda的源:
- 配置文件:
~/.condarc - 管理命令:
conda config - 源地址格式:channel URLs
pip的源:
- 配置文件:
~/.pip/pip.conf(Linux/macOS) 或%APPDATA%\pip\pip.ini(Windows) - 管理命令:无直接命令,需手动编辑
- 源地址格式:index-url
所以让你使用-i也就是index-url去配置清华
pip install torch==2.7.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install torchvision==0.22.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install d2l==1.0.3 -i https://pypi.tuna.tsinghua.edu.cn/simplemkdir d2l-zh && cd d2l-zh
# 文件有119MB大小
curl https://zh-v2.d2l.ai/d2l-zh-2.0.0.zip -o d2l-zh.zip
unzip d2l-zh.zip && rm d2l-zh.zip
cd pytorch重要提示
优先级:命令行指定的
-i参数 > 环境变量 > 用户配置文件 > 系统配置文件网络问题:如果遇到SSL证书问题,可以添加
--trusted-host参数:bash
pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn速度差异:即使都在清华源,conda源和pip源的下载速度也可能不同