当前位置: 首页 > web >正文

Python之格式化Conda中生成的requirements.txt

在conda中生成的requirements.txt如下

bidict @ file:///tmp/build/80754af9/bidict_1607541094382/work
blinker @ file:///C:/b/abs_d9y2dm7cw2/croot/blinker_1696539752170/work
click @ file:///C:/b/abs_f9ihnt72pu/croot/click_1698129847492/work
colorama @ file:///C:/b/abs_a9ozq0l032/croot/colorama_1672387194846/work
Flask @ file:///C:/b/abs_f9w7doyu0h/croot/flask_1716545924884/work
Flask-Cors==5.0.0
Flask-SocketIO @ file:///C:/b/abs_4fl4yt4uvo/croot/flask-socketio_1669060222784/work
importlib-metadata @ file:///C:/b/abs_c1egths604/croot/importlib_metadata-suite_1704813568388/work
itsdangerous @ file:///C:/b/abs_c4vwgdr5yn/croot/itsdangerous_1716533399914/work
Jinja2 @ file:///C:/b/abs_92fccttino/croot/jinja2_1716993447201/work
MarkupSafe @ file:///C:/b/abs_ecfdqh67b_/croot/markupsafe_1704206030535/work
python-engineio @ file:///tmp/build/80754af9/python-engineio_1618814346232/work
python-socketio @ file:///tmp/build/80754af9/python-socketio_1624540179952/work
PyYAML @ file:///C:/b/abs_14xkfs39bx/croot/pyyaml_1728657968772/work
Werkzeug @ file:///C:/b/abs_8bittcw9jr/croot/werkzeug_1716533366070/work
zipp @ file:///C:/b/abs_021kqswk3k/croot/zipp_1729012371206/work

列出的依赖列表包含了一些通过本地文件路径安装的包(如 @ file:///...

这些路径是特定于你当前环境的构建路径,在其他环境中直接使用可能会导致问题

可以通过如下脚本进行格式化:

import subprocess
import sysimport chardetwith open("requirements.txt", "rb") as f:result = chardet.detect(f.read(10000))  # 读取部分文件内容进行检测encoding = result['encoding']print(f"文件编码格式: {encoding}")clean_requirements = []
with open("requirements.txt", "r", encoding=encoding) as f:for pkg in f.readlines():if "@ file://" in pkg:# 提取包名(如 "Flask @ file://..." -> "Flask")pkg_name = pkg.split("@")[0].strip()# 获取该包的 PyPI 版本try:version = subprocess.check_output([ sys.executable, "-m", "pip", "show", pkg_name]).decode("utf-8")version_line = [line for line in version.splitlines() if line.startswith("Version:")][0]version_num = version_line.split(":")[1].strip()clean_requirements.append(f"{pkg_name}=={version_num}")except:# 如果无法获取版本,保留原始行(可能需要手动处理)clean_requirements.append(pkg)else:clean_requirements.append(pkg)# 写入 requirements.txt
with open("requirements.txt", "w") as f:f.write("\n".join(clean_requirements))

格式化后的requirements.txt如下

bidict==0.21.2
blinker==1.6.2
click==8.1.7
colorama==0.4.6
Flask==3.0.3
Flask-Cors==5.0.0Flask-SocketIO==5.3.1
importlib-metadata==7.0.1
itsdangerous==2.2.0
Jinja2==3.1.4
MarkupSafe==2.1.3
python-engineio==4.1.0
python-socketio==5.3.0
PyYAML==6.0.2
Werkzeug==3.0.3
zipp==3.20.2

http://www.xdnf.cn/news/16111.html

相关文章:

  • 我的第一个开源项目 -- 实时语音识别工具
  • 数据库表介绍
  • 算法提升之字符串回文处理-(manacher)
  • 自编码器表征学习:重构误差与隐空间拓扑结构的深度解析
  • 客户案例 | Jabil 整合 IT 与运营,大规模转型制造流程
  • 《小白学习产品经理》第八章:方法论之马斯洛需求层次理论
  • Java新特性-record
  • 力扣-139.单词拆分
  • js的基本内容:引用、变量、打印、交互、定时器、demo操作
  • 网络安全基础作业三
  • lspci/setpci用法小结
  • SpringBoot--Mapper XML 和 Mapper 接口在不同包
  • halcon手眼标定z方向实操矫正
  • [2025CVPR]ViKIENet:通过虚拟密钥实例增强网络实现高效的 3D 对象检测
  • React 项目性能优化概要
  • vs2017 c++ 使用sqlite3数据库
  • 基于Kubernetes的微服务CI/CD:Jenkins Pipeline全流程实践
  • 如何编译RustDesk(Unbuntu 和Android版本)
  • MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
  • haproxy的负载均衡集群搭建
  • Rust实战:决策树与随机森林实现
  • 微博视觉算法面试30问全景精解
  • MDC(Mapped Diagnostic Context) 的核心介绍与使用教程
  • 【PTA数据结构 | C语言版】爱之匹配
  • 【C++】继承和多态扩展学习
  • 【上市公司变量测量】Python+FactSet Revere全球供应链数据库,测度供应链断裂与重构变量——丁浩员等(2024)《经济研究》复现
  • Docker从入门到精通
  • IPv4枯竭时代:从NAT技术到IPv6的演进之路
  • SpringBoot6-10(黑马)
  • git的版本冲突