快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
创建一个Python脚本,使用conda命令自动管理环境。功能包括:1.扫描所有Conda环境并列出详细信息 2.分析各环境最近使用时间和依赖关系 3.智能推荐可删除的环境 4.提供安全删除选项(先备份再删除) 5.生成清理报告。要求使用subprocess调用conda命令,用argparse处理命令行参数,对危险操作添加确认提示。- 点击'项目生成'按钮,等待项目生成完整后预览效果
今天在整理开发环境时,发现conda里堆积了十几个测试环境,手动管理实在太麻烦。于是研究了下如何用Python脚本实现智能环境清理,分享下我的实践过程。
环境扫描功能实现通过subprocess模块调用
conda env list命令获取所有环境列表,然后用正则表达式提取环境名称和路径。这里特别注意要跳过base环境,避免误操作。为了获取更详细信息,可以结合conda list -n 环境名命令收集每个环境的包依赖情况。使用频率分析给脚本添加了记录环境最后访问时间的功能。通过检查环境目录下文件的修改时间,判断环境的活跃程度。对于超过30天未使用的环境,会在报告中特别标注。同时扫描项目文件夹,找出可能关联的工程目录。
依赖关系图谱最核心的是分析环境间的依赖关系。我设计了一个依赖关系矩阵,通过对比不同环境的包版本,识别出被其他环境继承的基础环境。比如发现多个环境都依赖python=3.8时,会提示保留最基础的那个环境。
交互式删除流程使用argparse模块处理命令行参数,支持三种模式:
- 查看模式:仅生成环境报告
- 推荐模式:列出建议清理的环境
执行模式:实际执行删除操作 在执行删除前会要求二次确认,并自动用
conda env export > backup.yaml备份环境配置。安全防护机制添加了多层保护措施:
- 禁止删除正在使用的环境
- 对系统路径的环境进行特殊提示
- 删除前强制备份
支持通过
--dry-run参数进行试运行报告生成优化最终报告包含以下维度:
- 环境名称和路径
- 创建/最后使用时间
- 占用磁盘空间
- 关键依赖包列表
- 关联项目提示 输出格式支持纯文本和HTML两种,方便不同场景查看。
实际使用中发现几个实用技巧: - 可以结合jupyter notebook的kernel列表交叉验证环境使用情况 - 对于大型环境,先执行conda clean --all能显著减少备份文件大小 - 定期运行脚本比堆积后再清理更高效
这个项目在InsCode(快马)平台上开发特别方便,内置的终端可以直接测试conda命令,AI辅助功能还能帮忙优化正则表达式和异常处理逻辑。最棒的是写完就能一键分享给团队成员使用,不用折腾环境配置。
建议把脚本设置为每周定时任务,配合版本控制系统的hook使用,可以始终保持开发环境的清爽。未来还计划加入自动迁移老旧环境依赖的功能,让环境管理更智能化。
快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
创建一个Python脚本,使用conda命令自动管理环境。功能包括:1.扫描所有Conda环境并列出详细信息 2.分析各环境最近使用时间和依赖关系 3.智能推荐可删除的环境 4.提供安全删除选项(先备份再删除) 5.生成清理报告。要求使用subprocess调用conda命令,用argparse处理命令行参数,对危险操作添加确认提示。- 点击'项目生成'按钮,等待项目生成完整后预览效果