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

Dify依赖管理poetry切换为uv

Dify升级 1.3.0 后api的依赖管理从poetry切换为了 uv管理,但是官网暂时还没有更新。
在这里插入图片描述
升级 tag:Dify 1.3.0版本

在此记录一下 uv 依赖管理操作

使用方法

[重要事项]

在 v1.3.0 版本中,`poetry` 已被[ `uv` ](https://docs.astral.sh/uv/) 替代,作为 Dify API 后端服务的包管理器。
  1. 启动 docker-compose 栈

    后端需要一些中间件,包括 PostgreSQL、Redis 和 Weaviate,可以使用 docker-compose 一起启动。

    cd ../docker
    cp middleware.env.example middleware.env
    # 如果不使用 weaviate,请将配置文件更改为其他向量数据库
    docker compose -f docker-compose.middleware.yaml --profile weaviate -p dify up -d
    cd ../api
    
  2. .env.example 复制为 .env

    cp .env.example .env 
    
  3. .env 文件中生成一个 SECRET_KEY

    Linux 系统的 bash 命令

    sed -i "/^SECRET_KEY=/c\SECRET_KEY=$(openssl rand -base64 42)" .env
    

    Mac 系统的 bash 命令

    secret_key=$(openssl rand -base64 42)
    sed -i '' "/^SECRET_KEY=/c\\
    SECRET_KEY=${secret_key}" .env
    
  4. 创建环境。

    Dify API 服务使用 UV 来管理依赖项。
    首先,如果还没有安装 uv 包管理器,需要先安装它。

    pip install uv
    # 或者在 macOS 上
    brew install uv
    
  5. 安装依赖项

    uv sync --dev
    
  6. 运行迁移

    在首次启动之前,将数据库迁移到最新版本。

    uv run flask db upgrade
    
  7. 启动后端

    uv run flask run --host 0.0.0.0 --port=5001 --debug
    
  8. 启动 Dify web 服务。

  9. 通过访问 http://localhost:3000 来设置你的应用程序。

  10. 如果你需要处理和调试异步任务(例如数据集导入和文档索引),请启动工作进程服务。

uv run celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion

测试

  1. 为后端和测试环境安装依赖项

    uv sync --dev
    
  2. 使用 pyproject.toml 文件中 tool.pytest_env 部分模拟的系统环境变量在本地运行测试

    uv run -P api bash dev/pytest/pytest_all_tests.sh
    
http://www.xdnf.cn/news/1967.html

相关文章:

  • Kafka和Spark-Streaming
  • 解释两个 Django 命令 makemigrations和migrate
  • 【器件专题1——IGBT第2讲】IGBT 基本工作原理:从结构到特性,一文解析 “电力电子心脏” 的核心机制
  • 5.6 Microsoft Semantic Kernel:专注于将LLM集成到现有应用中的框架
  • Pycharm(十六)面向对象进阶
  • 深度解析 Java 泛型通配符 `<? super T>` 和 `<? extends T>`
  • 使用功能包组织C++节点的具体教程
  • 天能资管(SkyAi):精准投资匹配,定制资产配置新体验
  • 202531读书笔记|《天上大风:良宽俳句·短歌·汉诗400》——我别无他物款待君,除了山中冬日寂寥,陶然共一醉,不知是与非,一饱百情足,一酣万事休
  • AI重塑职场:人机协同时代的组织变革与管理创新
  • AWS Glue ETL设计与调度最佳实践
  • 【HTTP/2:信息高速公路的革命】
  • 6.Three.js 中的 OrthographicCamera 详解(含示例)
  • 微信小程序文章管理系统开发实现
  • 5种隐蔽的外挂获取执行时机方法介绍
  • Ubuntu 上手动安装 Go 环境并解决“可执行文件格式错误”
  • 反射、枚举以及lambda表达式
  • 某些网站不允许复制怎么办
  • 蓝桥杯 4. 卡片换位
  • txtai:全能AI框架
  • 龙虎榜——20250425
  • spreadsheet 之websheet
  • vue项目前后端分离设计
  • 从氛围到节奏:情绪化配乐网站指南
  • 【Harmony_Bug】forEach + asyncawait 的异步陷阱
  • assertEquals()
  • 基于AIGC的3D场景生成实战:从文本描述到虚拟世界构建
  • 脚本分享:快速作图对比wannier拟合能带python脚本
  • 产品动态|千眼狼sCMOS科学相机捕获单分子荧光信号
  • Java代理讲解