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 sys

import chardet

with 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.0

Flask-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

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值