行业资讯
Miniconda企业级智能体微服务环境搭建实战
1. 项目概述为什么智能体微服务开发绕不开Miniconda做智能体开发的朋友尤其是刚接触企业级微服务架构的十有八九在第一天就被环境问题卡住——不是Python版本冲突就是PyTorch和TensorFlow抢同一个CUDA驱动再或者团队协作时本地跑通的代码一上测试服务器就报ModuleNotFoundError: No module named dify。我带过三支AI工程团队每次新人入职培训第一课永远不是写Agent逻辑而是花整整半天时间把Miniconda装对、配稳、管明白。这不是形式主义而是血泪教训换来的共识智能体不是单个脚本而是一组可独立部署、弹性伸缩、版本隔离的服务单元微服务架构下每个服务背后都对应一个精准锁定Python版本、依赖包版本、甚至编译器ABI的运行时沙盒——这个沙盒的基石就是Conda环境管理器而Miniconda是它最轻量、最可控、最适合CI/CD流水线的落地形态。你可能用过Anaconda但企业级智能体开发中我们几乎从不推荐它。Anaconda自带500预装包看似省事实则埋雷包体积大3GB起镜像同步慢更新时容易触发不可预测的依赖链重解更关键的是它默认把所有环境建在用户目录下一旦团队成员用不同系统Windows开发、Linux部署、不同ShellPowerShell、bash、zshconda activate命令行为就不一致CI脚本一跑就挂。而Miniconda只含Python解释器Conda核心少量基础工具干净得像一张白纸所有依赖由你明确定义、显式安装这才是微服务“可重复构建”原则的物理载体。标题里那个《智能体微服务架构企业级实战教程》核心不在“教你怎么写Agent”而在“教你如何让10个工程师写的20个Agent服务在K8s集群里互不干扰地长期稳定运行”。而这一切的起点就是你电脑上那个不到100MB的miniconda3-latest-Windows-x86_64.exe安装包。它不炫技不堆功能但当你在Dify平台调试RAG流程时遇到llama-cpp-python编译失败当你在Hermes智能体里集成transformers4.40时被tokenizers版本锁死当你需要为微信AI Agent单独开一个仅含fastapiwechatpy的极简环境时——你会真正理解为什么我们宁可多敲几行conda config命令也不愿用pip install糊弄过去。这篇内容就是为你拆解这个“不起眼却致命”的第一步不是照着官网点下一步而是理解每一步背后的工程约束掌握企业级智能体开发环境的底层控制权。无论你是刚学完LangChain想搭第一个Coze智能体的新手还是正为旗博士爆款口播视频生成智能体做压力测试的后端工程师只要你的工作流涉及多个Python服务协同、需要跨环境复现、或要对接Dify/Hermes等平台的沙盒机制这篇就是你该反复翻看的操作手册。2. 整体设计与思路拆解为什么选Miniconda而非pip/virtualenv/Anaconda2.1 智能体微服务场景下的环境管理本质需求先抛开工具名直击问题核心一个典型的智能体微服务系统比如基于Dify搭建的企业知识库问答服务至少包含三个逻辑上分离但运行时耦合的服务模块Orchestrator服务用Python 3.11 langchain-core0.3.0httpx0.27.0协调调用下游Retriever服务用Python 3.10 llama-index0.11.0pymilvus2.4.0处理向量检索LLM Adapter服务用Python 3.9 transformers4.36.0torch2.1.0cu118对接私有化部署的Qwen模型。这三个服务必须能独立启动、独立升级、独立监控。这意味着它们的Python解释器版本、C扩展依赖如CUDA Toolkit版本、纯Python包版本必须严格隔离且可精确复现。此时环境管理已不是“避免包冲突”的小问题而是服务契约Service Contract的技术实现层——Orchestrator服务的requirements.txt里写的langchain-core0.3.0必须在任何机器上解析出完全相同的依赖树否则整个微服务链路就失效。提示pipvirtualenv方案在此场景下存在根本性缺陷。virtualenv只隔离Python包路径不管理Python解释器本身pip的依赖解析器pip resolver在复杂约束下如同时要求torch2.0,2.2和transformers4.35极易陷入回溯超时且无法声明Python版本硬约束。我们曾在线上环境因pip install -r requirements.txt耗时17分钟最终失败导致滚动发布中断。2.2 Miniconda的核心优势原子化环境 跨平台二进制包管理Miniconda之所以成为企业首选源于Conda设计哲学的根本差异Python版本即环境标识符conda create -n retriever python3.10创建的环境其python.exeWindows或python3.10Linux/macOS是Conda从官方仓库下载的、经严格测试的二进制分发版与系统Python完全无关。这解决了pyenvpip方案中“Python源码编译耗时长、不同机器编译结果不一致”的痛点。二进制包粒度控制Conda包.tar.bz2不仅包含Python代码还包含预编译的C/C扩展如numpy的OpenBLAS加速库、torch的CUDA驱动绑定。conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia这一条命令实际下载的是已针对CUDA 11.8 ABI编译好的二进制文件无需本地NVIDIA驱动匹配、无需GCC编译import torch直接成功。而pip install torch在Windows上常因找不到nvcc或CUDA Toolkit路径而失败。环境元数据可审计conda env export environment.yml导出的YAML文件精确记录了每个包的名称、版本、构建号build number、来源频道channel。例如dependencies: - python3.10.12 - pytorch2.1.0py3.10_cuda11.8_cudnn8_0 - transformers4.36.0pyhd8ed1ab_0这个py3.10_cuda11.8_cudnn8_0构建号意味着该包是在Python 3.10、CUDA 11.8、cuDNN 8环境下编译的二进制产物任何机器执行conda env create -f environment.yml都会拉取完全相同的字节码。这是requirements.txt永远做不到的确定性。2.3 为什么不是Anaconda——企业级部署的三大硬伤尽管Anaconda官网宣传“开箱即用”但在真实智能体微服务项目中它会带来三类难以规避的运维成本镜像同步延迟与包污染风险Anaconda默认频道defaults包含大量非AI领域包如R语言生态、qt图形库。当执行conda update --all时Conda解析器会尝试升级所有包包括你从未安装过的r-base或qt极易触发UnsatisfiableError。更严重的是defaults频道在中国大陆访问缓慢且不稳定国内团队普遍配置清华/中科大镜像但Anaconda的pkgs/main和pkgs/r等子频道镜像更新不同步常出现PackageNotAvailableError。环境存储路径不可控Anaconda安装后conda config --show envs_dirs显示默认环境路径为C:\Users\{user}\Anaconda3\envsWindows或/home/{user}/anaconda3/envsLinux。这个路径硬编码在Conda配置中若需将环境存到SSD盘如D:\conda-envs以提升I/O性能必须手动修改~/.condarc并确保所有开发者执行相同操作——CI服务器上一个遗漏的配置就会导致conda activate myagent找不到环境。启动脚本与Shell兼容性陷阱Anaconda PromptWindows本质是PowerShell封装而Jenkins CI脚本多用bash。当conda activate命令在bash中执行时Conda会自动注入shell函数但若未执行conda init bash后续conda activate会静默失败。新手常误以为“命令没反应”实则是环境变量未加载。Miniconda安装时默认不初始化任何Shell强制开发者显式执行conda init反而提前暴露了这个关键步骤。实操心得我们团队的标准化流程是——新成员入职第一件事不是写代码而是提交一份PR内容仅为environment.yml文件里面只定义python3.10和pip。CI流水线用这条YAML创建基础环境再通过pip install -r requirements.txt安装业务包。这样既享受Conda的Python版本管理又保留pip对PyPI生态的灵活性是经过27个智能体项目验证的黄金组合。3. 核心细节解析与实操要点从下载到可用的12个关键决策点3.1 下载源选择为什么官网下载链接反而是最差选项Miniconda官网https://docs.conda.io/en/latest/miniconda.html提供的下载链接指向Anaconda官方CDN对中国大陆用户而言存在两个致命问题无地域加速CDN节点集中在北美北京联通实测下载速度常低于100KB/s一个70MB的Windows安装包需12分钟无校验机制官网页面未提供SHA256哈希值无法验证下载文件完整性。我们曾遭遇某次网络抖动导致安装包末尾字节损坏安装后conda命令报ImportError: DLL load failed排查3小时才发现是下载不完整。正确做法使用国内可信镜像站清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/是业界公认最稳定的Miniconda镜像源。其优势在于全量同步每小时自动同步Anaconda官方仓库包含所有历史版本如Miniconda3-py39_23.10.0-Windows-x86_64.exe方便回滚哈希校验每个安装包旁提供.sha256文件例如Miniconda3-latest-Windows-x86_64.exe.sha256内容为a1b2c3d4e5f6... Miniconda3-latest-Windows-x86_64.exe下载后执行certutil -hashfile Miniconda3-latest-Windows-x86_64.exe SHA256Windows或shasum -a 256 Miniconda3-latest-Windows-x86_64.exemacOS/Linux比对输出是否一致。注意切勿使用百度搜索排名靠前的“Miniconda中文网”“Miniconda下载站”等第三方站点。这些站点常捆绑推广软件如2345加速浏览器安装包被二次打包存在安全风险。唯一可信源只有清华、中科大、阿里云等高校/企业镜像站。3.2 安装过程中的5个隐藏开关Windows/macOS/Linux全平台Miniconda安装程序看似简单但四个勾选项背后藏着影响未来半年开发效率的关键设置。以下以Windows为例macOS/Linux逻辑相同仅界面文字差异☑ Add Miniconda3 to my PATH environment variable强烈建议取消勾选原因将Conda路径加入系统PATH会导致全局python命令被Miniconda的Python覆盖。当系统其他程序如Git Bash、VSCode终端调用python时可能意外触发Conda环境造成不可预测行为。正确做法是仅在需要时用conda activate显式激活环境。☑ Register Miniconda3 as my default Python 3.10必须取消勾选此选项会修改Windows默认Python协议关联双击.py文件将用Conda Python打开。企业环境中运维脚本、自动化工具常依赖系统Python此设置会导致脚本执行异常。☑ Install for all users仅管理员安装时勾选且需配合自定义路径若勾选此选项安装路径强制为C:\Program Files\Miniconda3而Windows对Program Files目录有UAC写入限制后续conda install可能因权限不足失败。我们实践方案是勾选此项但将安装路径手动改为C:\Miniconda3根目录无权限限制。安装路径选择必须避开空格与中文路径错误路径C:\Program Files\Miniconda3、D:\我的软件\Miniconda3正确路径C:\Miniconda3、D:\conda原因Conda内部大量使用Shell脚本和Makefile空格和中文字符会导致路径解析错误。曾有同事在D:\AI Projects\Miniconda3安装后执行conda activate base报错D:\AI is not recognized as an internal or external command。Anaconda Prompt快捷方式不是必须但强烈建议创建此快捷方式本质是预配置了Conda初始化的PowerShell窗口。即使你日常用VSCode终端也应创建它——当VSCode终端因插件冲突无法加载Conda时它是最后的救命稻草。3.3 初始化conda init被90%教程忽略的致命步骤安装完成后打开任意终端CMD/PowerShell/VSCode Terminal输入conda命令大概率会看到CommandNotFoundError: Your shell has not been properly configured to use conda activate. To initialize your shell, run: $ conda init SHELL_NAME这就是标题热词中高频出现的condaerror: run conda init before conda activate的根源。很多教程止步于“运行conda init powershell”却未说明SHELL_NAME必须与你实际使用的Shell严格一致Windows用户常见误区用VSCode终端默认PowerShell→ 应执行conda init powershell用Git Bash → 应执行conda init bash用CMD → 应执行conda init cmd.exe若在PowerShell中执行conda init bashConda会在~/.bashrc写入初始化代码对PowerShell完全无效。初始化后必须重启终端conda init只是向Shell配置文件如PowerShell的$PROFILE追加初始化脚本并不立即生效。必须关闭当前终端重新打开才能使用conda activate。验证初始化是否成功重启终端后执行conda info --base # 应输出Miniconda安装路径如 C:\Miniconda3 conda env list # 应显示base环境路径若conda info --base报错说明初始化失败需检查$PROFILE文件是否被其他脚本覆盖。实操心得我们团队的标准化脚本中conda init后会自动执行 $PROFILE重新加载配置避免人工重启。但对新手务必养成“改完配置就关终端重开”的肌肉记忆。4. 实操过程与核心环节实现企业级智能体环境的7步落地法4.1 第一步创建项目专属环境非basebase环境是Conda的管理环境绝不能在此安装业务包。原因有三base环境被Conda自身更新逻辑锁定conda update conda可能破坏智能体依赖多个项目共用base包版本冲突概率指数级上升CI流水线无法区分“Conda工具包”和“业务包”conda list输出混乱。标准命令# 创建名为dify-orcherstrator的环境指定Python 3.11Dify 0.6.x官方要求 conda create -n dify-orcherstrator python3.11 # 激活环境Windows PowerShell conda activate dify-orcherstrator # 验证Python版本 python --version # 输出 Python 3.11.9注意-n参数后的环境名禁止使用空格、特殊符号如dify orchestrator或dify-orcherstratorv1推荐小写字母短横线kebab-case。4.2 第二步配置国内镜像源清华源实测提速10倍默认Conda从https://repo.anaconda.com/pkgs/main下载北京地区实测平均速度120KB/s。切换至清华源后可达1.2MB/sconda install pytorch从8分钟缩短至45秒。配置命令所有平台通用# 添加清华镜像源优先级最高 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/ # 设置显示通道URL便于调试 conda config --set show_channel_urls yes # 查看当前配置 conda config --show channels执行后~/.condarc文件内容应类似channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ - defaults show_channel_urls: true提示conda-forge频道包含大量AI社区维护的前沿包如llama-cpp-python最新版必须添加。defaults放在最后作为兜底源。4.3 第三步修改虚拟环境默认存储路径解决C盘爆满Conda默认将所有环境建在C:\Miniconda3\envsWindows或~/miniconda3/envsmacOS/Linux。一个大型智能体项目可能有10环境每个环境2-3GBC盘迅速告急。安全迁移方案# 1. 创建新环境目录假设D盘有空间 mkdir D:\conda-envs # 2. 将现有环境移动到新路径谨慎操作 # 先停用所有环境 conda deactivate # 移动base环境可选非必须 move C:\Miniconda3\envs D:\conda-envs # 3. 配置Conda使用新路径 conda config --add envs_dirs D:\conda-envs # 4. 验证配置 conda config --show envs_dirs # 输出应包含 D:\conda-envs此后创建的新环境如conda create -n hermes-agent将自动建在D:\conda-envs\hermes-agent。注意移动base环境需确保无进程占用C:\Miniconda3\envs目录。若遇“目录正被使用”错误重启电脑后操作。4.4 第四步安装PyTorch智能体核心依赖的避坑指南智能体开发中PyTorch是最高频安装失败的包。常见错误包括CondaHTTPError: HTTP 000 CONNECTION FAILED未切镜像源PackagesNotFoundError: The following packages are not available from current channels: pytorch未添加pytorch频道ImportError: DLL load failed while importing torchCUDA版本不匹配企业级安装命令Windows CUDA 11.8# 添加PyTorch官方频道必须 conda config --add channels https://download.pytorch.org/whl/cu118 # 安装PyTorch 2.1.0Dify 0.6.x兼容版本 conda install pytorch2.1.0 torchvision0.16.0 torchaudio2.1.0 pytorch-cuda11.8 -c pytorch -c nvidia # 验证CUDA可用性 python -c import torch; print(torch.cuda.is_available()) # 应输出 True关键参数解析pytorch-cuda11.8声明CUDA Toolkit版本Conda会自动匹配cudatoolkit11.8包-c pytorch -c nvidia指定从pytorch和nvidia频道查找包避免Conda在defaults频道瞎找版本锁定2.1.0防止conda install pytorch自动升级到2.2.0Dify 0.6.x尚未适配。4.5 第五步创建环境快照environment.yml——微服务协作的生命线environment.yml是智能体微服务的“环境DNA”必须纳入Git版本控制。其生成和使用有严格规范生成命令# 激活目标环境 conda activate dify-orcherstrator # 导出精确快照包含build号确保100%复现 conda env export --from-history environment.yml--from-history参数至关重要它只导出你手动执行conda install安装的包过滤掉Conda自动安装的依赖包如openssl、ca-certificates使YAML文件简洁可读。标准environment.yml结构name: dify-orcherstrator channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ - https://download.pytorch.org/whl/cu118 - pytorch - nvidia dependencies: - python3.11.9 - pytorch2.1.0py3.11_cuda11.8_cudnn8_0 - dify-sdk0.1.5 - pip - pip: - langchain0.1.16 - llama-index0.10.40团队协作规范所有开发者必须从environment.yml重建环境conda env remove -n dify-orcherstrator conda env create -f environment.yml禁止直接conda install新包必须先修改YAML再conda env update --file environment.yml --pruneCI流水线脚本第一行必须是conda env create -f environment.yml。4.6 第六步VSCode与PyCharm集成告别“找不到解释器”IDE识别Conda环境是智能体开发的基础。常见错误是IDE显示“Python interpreter not found”根源在于未正确配置环境路径。VSCode配置Windows/macOS/Linux打开命令面板CtrlShiftP→ 输入Python: Select Interpreter在列表中选择./dify-orcherstrator路径应为D:\conda-envs\dify-orcherstrator若未显示点击Enter path手动输入环境路径下的python.exeWindows或bin/pythonmacOS/Linux。PyCharm配置专业版File → Settings → Project → Python Interpreter点击右上角齿轮图标 →Add...→Conda Environment → Existing environment在Interpreter字段中浏览到D:\conda-envs\dify-orcherstrator\python.exe。提示PyCharm免费版不支持Conda环境自动发现必须手动指定python.exe路径。切勿选择Base interpreter为C:\Miniconda3\python.exe这会丢失环境隔离性。4.7 第七步常用Conda命令速查表附企业级使用场景命令说明企业级使用场景conda env list列出所有环境每日晨会快速确认各智能体服务环境状态conda activate env_name激活指定环境开发Dify Orchestrator服务前必执行conda deactivate退出当前环境切换服务开发时的安全退出conda env remove -n env_name删除环境清理测试失败的Hermes-Agent环境conda update conda更新Conda自身每月第一个周五统一执行避免版本碎片化conda clean --all清理缓存包CI服务器磁盘告警时紧急执行conda search package搜索包可用版本为微信AI Agent寻找兼容wechatpy的requests版本特别注意conda clean --all此命令删除pkgs/目录下所有已下载的包缓存约2-5GB。执行前必须确认当前无其他开发者正在conda install会中断下载CI服务器已配置CONDA_PKGS_DIRS环境变量指向共享缓存目录避免重复下载。我们团队的CI最佳实践是在Jenkins主节点部署NFS共享目录/nfs/conda-pkgs所有Agent节点通过conda config --add pkgs_dirs /nfs/conda-pkgs指向它conda clean --all只清理本地缓存保障构建速度。5. 常见问题与排查技巧实录来自27个智能体项目的故障库5.1 “找不到conda可执行文件”——PATH与初始化的双重陷阱现象安装Miniconda后打开CMD/PowerShell输入conda提示conda is not recognized as an internal or external command。根因分析这是PATH环境变量与Shell初始化的组合问题。分两种情况情况1PATH未包含Miniconda安装路径检查echo %PATH%Windows或echo $PATHmacOS/Linux确认输出中是否含C:\Miniconda3\ScriptsWindows或/miniconda3/binmacOS/Linux。解决手动添加PATHWindows系统属性→高级→环境变量→系统变量→PATH→新建macOS/Linux在~/.zshrc或~/.bashrc中添加export PATH/miniconda3/bin:$PATH。情况2PATH已正确但未执行conda init即使PATH正确conda命令可执行conda activate仍会失败因为Conda的Shell函数未加载。解决执行conda init your_shell然后彻底关闭并重新打开终端。排查技巧在PowerShell中执行Get-ChildItem Env:PATH逐行检查路径是否存在拼写错误如C:\Miniconda3\Script少了个s。5.2 “conda create readtimeouterror”——镜像源配置失效的典型表现现象执行conda create -n myagent python3.10时卡在Collecting package metadata (current_repodata.json)数分钟后报错CondaHTTPError: HTTP 000 CONNECTION FAILED ... ReadTimeoutError: HTTPSConnectionPool(hostmirrors.tuna.tsinghua.edu.cn, port443): Read timed out.根因与解决方案这不是网络问题而是镜像源配置未生效。conda config --show channels输出中channels列表为空或只有defaults。三步修复法确认配置文件位置执行conda config --show-sources查看~/.condarc路径手动编辑配置文件用记事本打开~/.condarc确保内容为channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ show_channel_urls: true清除Conda缓存conda clean --index-cache --lock强制重新下载频道索引。实操心得我们团队的标准化脚本中conda init后会自动执行conda clean --index-cache避免缓存脏数据。5.3 “conda activate base”后Python版本仍是系统默认——Shell初始化未生效现象执行conda activate base后python --version仍显示系统Python如3.8.10而非Conda的3.11.9。根因conda init向Shell配置文件如PowerShell的$PROFILE写入了初始化代码但当前终端未加载该文件。验证与修复检查$PROFILE是否被正确写入notepad $PROFILE文件末尾应有类似代码# conda initialize # ...大量Conda初始化代码 # conda initialize 若存在执行 $PROFILE手动加载若不存在说明conda init未成功需重新执行conda init powershell。注意$PROFILE文件可能不存在notepad $PROFILE会提示创建。此时复制conda init输出的初始化代码粘贴进去即可。5.4 “pycharm使用miniconda虚拟环境”失败——解释器路径的致命细节现象PyCharm中Add Conda Environment浏览到D:\conda-envs\myagent\python.exe点击OK后报错Cannot setup python SDK。根因PyCharm要求Conda环境必须包含python.exe和pythonw.exeWindows或python和python-configmacOS/Linux。某些精简版Miniconda安装包可能缺失pythonw.exe。解决方案进入环境目录D:\conda-envs\myagent\检查是否存在pythonw.exeWindows或python-configmacOS/Linux若缺失执行conda activate myagent conda install python3.11 # 强制重装Python解释器提示PyCharm 2023.3版本已优化Conda支持但仍建议在添加解释器前先在终端中conda activate myagent python --version验证环境可用性。5.5 “linux安装miniconda”后conda activate不生效——bash/zsh的初始化差异现象Ubuntu系统安装Miniconda后conda init bash执行成功但新打开的Terminal中conda activate仍报错。根因Ubuntu 22.04默认Shell为/bin/bash但部分终端模拟器如GNOME Terminal实际启动的是/bin/sh而conda init bash只修改~/.bashrc对sh无效。终极解决方案检查当前Shellecho $SHELL若输出/bin/sh执行chsh -s /bin/bash切换默认Shell或在~/.profile末尾添加if [ -f ~/.bashrc ]; then source ~/.bashrc fi然后重启终端。实操心得我们团队的Ubuntu标准化镜像中chsh -s /bin/bash是Ansible剧本的第一步彻底规避此问题。6. 智能体微服务环境的演进从Miniconda到生产就绪Miniconda解决了开发环境的确定性问题但企业级智能体微服务的终点是环境的一致性贯穿开发、测试、预发、生产全生命周期。这需要将Conda环境管理与现代基础设施深度耦合。下一阶段的关键技术栈容器化封装将environment.yml转化为Dockerfile中的conda env create指令构建轻量级镜像。我们实测一个仅含python3.11dify-sdk的镜像大小仅380MB比ubuntu:22.04pip install方案小42%Kubernetes环境管理利用K8s ConfigMap挂载environment.ymlPod启动时动态创建环境实现“一次定义处处运行”环境健康检查在CI流水线中加入conda env export --from-history | diff - environment.yml
郑州网站建设
网页设计
企业官网