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

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.dtcms.com/a/293047.html

相关文章:

  • timesFM安装记录
  • JavaWeb学习打卡10(HttpServletRequest详解应用、获取参数,请求转发实例)
  • PyTorch常用工具
  • 我的第一个开源项目 -- 实时语音识别工具
  • C++中的list(2)简单复现list中的关键逻辑
  • 水电站自动化升级:Modbus TCP与DeviceNet的跨协议协同应用
  • CMake实践:CMake3.30版本之前和之后链接boost的方式差异
  • 渗透部分总结
  • 从 COLMAP 到 3D Gaussian Splatting
  • vue2的scoped 原理
  • Flex/Bison(腾讯元宝)
  • 开源AI智能客服、AI智能名片与S2B2C商城小程序在客户复购与转介绍中的协同效应研究
  • 禁食时长与关键生物反应的相对强度对照表
  • syscall函数用法
  • Java 中 String 类的常用方法
  • JavaScript的进阶学习--函数和基本对象的解析
  • 16-MSTP
  • 加速度计输出值的正负号与坐标系正方向相反
  • 基于 Agent 的股票分析工具
  • Windows Server 设置MySQL自动备份任务(每日凌晨2点执行)
  • 洛谷刷题7..22
  • 贪心算法Day3学习心得
  • VBScript 拖拽文件显示路径及特殊字符处理
  • gitlab私服搭建
  • 根据数据,判断神经网络所需的最小参数量
  • 如何搭建appium工具环境?
  • 嵌入式学习-土堆目标检测(2)-day26
  • 浏览器解码顺序xss
  • UE5 UI WarpBox 包裹框
  • Leetcode力扣解题记录--第41题(原地哈希)