首页
/ Langflow 快速安装与启动指南:本地安装、源码开发与 Docker 部署全解

Langflow 快速安装与启动指南:本地安装、源码开发与 Docker 部署全解

2026-09-04 21:53:48作者:庞眉杨Will

本文基于 Langflow 仓库根目录的 README.md 展开,系统讲解 Langflow 这一可视化 AI Agent 与工作流平台的完整上手路径:从 Langflow Desktop、uv 本地安装到源码开发与 Docker 容器化部署四种方式,并结合仓库中 CLI 入口、Makefile 构建脚本与版本配置等源码证据,帮助读者不仅"装得上",还能理解 langflow run 背后的启动链路与各启动参数的实际作用。

什么是 Langflow:平台定位与核心特性

根据 README.md 的定义,Langflow 是一个用于构建和部署 AI 驱动 Agent 与工作流(workflows)的平台。它为开发者提供两套互补的能力:

  • 可视化编排体验(Visual authoring experience):通过拖拽组件快速构建 AI 应用;
  • 内置 API 与 MCP 服务器:每一个工作流都可以被转换为工具(tool),通过 REST API 或 MCP 协议集成到任意框架或技术栈构建的应用中。

平台"开箱即用"(batteries included),支持主流 LLM、向量数据库以及持续扩充的 AI 工具库。README 中列出的八项核心特性如下,均可在仓库中对应到具体实现:

特性 说明 仓库佐证
可视化构建器界面 快速上手与迭代 前端工程位于 src/frontend/
源码级组件访问 用 Python 自定义任何组件 组件基类见 lfx 自定义组件
交互式 Playground 分步测试与调试 Flow 后端 api/v1 中的 build 端点
多 Agent 编排 会话管理与检索 agentic 模块
部署为 API / 导出 JSON 供 Python 应用消费 API 参考文档
部署为 MCP 服务器 Flow 变成 MCP 客户端可调用的工具 MCP 服务器文档
可观测性 集成 LangSmith、LangFuse 等 observability CLI 子命令
企业级安全与扩展性 多 Worker、PostgreSQL、限流等 langflow run--deployment-profile prod

当前仓库的版本号为 1.12.0(见 pyproject.toml 第 3 行),Python 版本要求为 3.10–3.14requires-python = ">=3.10,<3.15")。

安装方式一:Langflow Desktop(最省事)

README 指出,Langflow Desktop 是上手 Langflow 最简单的方式:所有依赖已内置,无需自行管理 Python 环境或手动安装任何包,支持 Windows 和 macOS 平台。适合希望零配置体验可视化编排的用户。

安装方式二:uv 本地安装(README 推荐方式)

环境要求

  • Python 3.10–3.14
  • uv(推荐的 Python 包管理器)。

安装

在全新目录下执行:

uv pip install langflow -U

安装完成后即获得最新版本的 Langflow 包。

运行

uv run langflow run

启动后 Langflow 服务默认监听 http://127.0.0.1:7860,浏览器访问该地址即可进入可视化界面开始构建。

这条命令到底装了什么?

pyproject.toml 的依赖声明可以看到,langflow 顶层包本身是一个"聚合包":

  • 核心运行时依赖 langflow-base~=1.12.0(工作区成员,源码位于 src/backend/base/),承载 FastAPI 后端、数据库模型与服务层;
  • 一组 lfx-* 捆绑包依赖,如 lfx-openailfx-anthropiclfx-azurelfx-ollamalfx-doclinglfx-datastax 等,对应 src/bundles/ 目录下各厂商集成的组件实现。

一个值得注意的依赖策略细节:顶层包对每个 lfx-* 捆绑包声明的是有界版本区间(>=A,<B)而非精确 pin——pyproject.toml 中的注释明确解释了原因:"精确 pin 会给依赖不同版本组合的下游用户带来解析冲突,可复现的精确版本由 uv.lock 和发布构建清单来保证"。也就是说,日常 uv pip install langflow 得到的版本组合由 uv.lock 锁定保证可复现,而元数据层面保持灵活性。

深入解析 langflow run:CLI 启动链路

README 中一行简单的 uv run langflow run,在源码中对应一条相当完整的启动链。以下分析基于 src/backend/base/langflow/main.pysrc/backend/base/langflow/langflow_launcher.py

入口层:跨平台修正

langflow 控制台脚本先经由 langflow_launcher.pymain() 函数:

  • macOS:Objective-C 运行时在 Python 启动阶段即完成初始化,之后在 Python 内再设置 OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES 已经太晚。因此 launcher 采用 os.execv父进程环境中先设置该变量再替换当前进程(见 langflow_launcher.py 的注释),规避 Gunicorn fork 多进程时的 SIGSEGV;
  • Windows + PostgreSQL:调用 configure_windows_postgres_event_loop 预先配置事件循环策略,解决 psycopg 在 Windows 默认事件循环下的兼容性问题;
  • 其他平台:直接调用 langflow.__main__.main()

run 命令的完整参数

CLI 基于 Typer 构建(app = typer.Typer(no_args_is_help=True)main.py)。run 命令(L332-L424)暴露了远多于 README 所示的参数,常用项整理如下:

参数 类型 作用
--host str 服务器绑定地址
--port int 监听端口(默认 7860,见 Makefile 变量)
--workers int Worker 进程数(-1 表示 CPU*2+1,见 get_number_of_workers
--worker-timeout int Worker 超时秒数
--log-level str 日志级别:debug / info / warning / error / critical,默认 info
--log-file / --log-rotation Path / str 日志文件路径与轮转策略
--env-file Path 加载 .env 环境变量文件
--components-path Path 自定义组件目录,默认指向包内 components 目录
--frontend-path str 前端构建产物路径(仅开发用途)
--backend-only bool 只启动后端、不挂载前端
--open-browser bool 启动后自动打开浏览器
--cache str 缓存类型(InMemoryCache、SQLiteCache)
--max-file-size-upload int 上传文件大小上限(MB)
--webhook-polling-interval int Webhook 轮询间隔
--ssl-cert-file-path / --ssl-key-file-path str 直接启用 HTTPS
--deployment-profile str dev(默认)或 prodprod 会在启动前执行 fail-loud 基础设施预检

此外,CLI 还注册了两个子命令组(main.py):

  • langflow lfx serve / langflow lfx run:LFX(Langflow Executor)子命令,把 Flow 作为独立 API 服务或直接运行,对应仓库中独立的 lfx 包
  • langflow observability doctor:检查 Langflow 自身的 OTLP 遥测管线连通性。

启动六步流程

run 命令主体以 progress 步骤组织(main.py):

  1. Step 0-1:加载配置。若提供 --env-fileload_dotenv(override=True);随后把命令行参数统一注入 settings 服务,参数优先级为 CLI > 环境变量(LANGFLOW_*)> 默认值。日志级别同样遵循该优先级(log_level or os.environ["LANGFLOW_LOG_LEVEL"] or "info")。
  2. 生产预检:当 deployment_profile == "prod" 时,调用 cli/preflight.pyrun_production_preflight 在生成任何 Worker 之前做基础设施检查,缺服务即中止,避免"半残启动"。
  3. 数据库预检:若配置了 database_url(PostgreSQL),启动前先同步检查版本(check_postgresql_version_sync),版本过旧直接 sys.exit(1)
  4. 端口冲突处理:通过 is_port_in_use 探测端口,若被占用则 get_free_port 逐个递增直到找到可用端口,并把运行期端口写回 settings(runtime_port)。
  5. Web 服务器启动(Step 6),此处存在平台分叉:
    • Linux:走 GunicornLangflowApplication + LangflowUvicornWorker),支持 fork() 多 Worker 与 LANGFLOW_GUNICORN_PRELOAD=true 的 fork 前预加载;
    • Windows / macOSDIRECT_UVICORN_PLATFORMS):因 Windows 无 fork、macOS fork 配合多线程/asyncio 有崩溃风险,直接对预构建的 FastAPI app 对象调用 uvicorn.run,且 Worker 数会被 clamp_uvicorn_workers 强制钳制为 1(uvicorn 以 app 对象启动不支持多 Worker)。
  6. 就绪等待与 Banner:Linux 路径通过 wait_for_server_ready 轮询 /{protocol}//host:port/health 端点直至 200 后打印欢迎 Banner;Banner 同时会查询 PyPI 提示是否有新版本可升级(build_version_notice)。

一个重要的安全护栏:多 Worker 与任务队列

从源码结构看,ensure_multi_worker_safemain.py)在多 Worker 场景下有一个容易踩坑的默认值问题:默认的 JobQueueService 把 build 队列保存在进程本地内存中,而 POLLING/STREAMING 事件投递依赖"先 POST 发起 build、再 GET 拉取事件"两次请求——Gunicorn 会把这两次请求轮询到不同 Worker,导致约一半概率出现 "Job queue not found"。因此:

* 配置共享任务队列:LANGFLOW_JOB_QUEUE_TYPE=redis(兼容所有事件投递模式)
* 或单 Worker 运行:--workers 1

若既不配置 Redis 队列又要求多 Worker,langflow run直接拒绝启动并抛出上述提示(RuntimeError),这是源码中明确的设计决策。

遥测与隐私

Banner 中会显示遥测状态:Langflow 收集匿名使用数据,通过环境变量 DO_NOT_TRACK=true(或 LANGFLOW_DO_NOT_TRACK)可关闭。

安装方式三:从源码运行(面向贡献者)

README.md 指出,若已克隆仓库并希望参与贡献,在仓库根目录执行:

make run_cli

该命令并非一步完成,查看 Makefile 可见其依赖链为 install_frontend → install_backend → build_frontend,最终执行:

uv run langflow run \
    --frontend-path src/backend/base/langflow/frontend \
    --log-level debug \
    --host 0.0.0.0 \
    --port 7860 \
    --env-file .env

Makefile 顶部还定义了一组可覆盖变量Makefile),便于调整启动行为:

变量 默认值 说明
log_level debug 日志级别
host 0.0.0.0 绑定地址
port 7860 端口
env .env 环境变量文件
open_browser true 是否自动打开浏览器(置 false 时追加 --no-open-browser
workers 1 Worker 数
UV_RUN_ARGS 透传给 uv run 的额外参数

若遇到前端构建异常(例如从旧版本升级后),可执行 make run_clic——它会先 clean_frontend_build 清空构建缓存再全量重建(Makefile)。

完整开发环境(hot-reload)

DEVELOPMENT.md 给出了面向贡献者的完整流程:

  1. 前置工具gitmakeuv(>=0.4)、npm(前端构建要求 Node.js v22.12 LTS、npm v10.9)。macOS/Linux 用本地环境,Windows 建议 WSL 或 Dev Container。
  2. 初始化make init,等价于依次执行 install_backenduv sync --frozen --extra postgresql)、install_frontenduvx pre-commit installMakefile)。
  3. 热重载启动make backend 会以 --reload 方式运行 uvicorn --factory langflow.main:create_app --host 0.0.0.0 --port 7860 --env-file .env --loop asyncioMakefile),FastAPI 端支持代码热重载。
  4. 组件开发模式:默认使用预构建组件索引(启动约 10ms);开发组件时可用 LFX_DEV=1 make backend 动态加载全部组件,或 LFX_DEV=mistral,openai,anthropic make backend 只加载指定模块以显著加快启动。不做索引重建时改动不会生效,需运行 uv run python scripts/build_component_index.py(对应 Makefile 的 build_component_index 目标)。

安装方式四:Docker 容器部署

README 给出的最简容器化命令:

docker run -p 7860:7860 langflowai/langflow:latest

启动后访问 http://localhost:7860/ 即可。更多配置项(环境变量、卷挂载、持久化等)可参考仓库内维护的 Docker 部署指南

仓库内还备有更完整的容器化资产:多阶段构建文件 docker/build_and_push.Dockerfile、前后端分离的 build_and_push_backend.Dockerfilebuild_and_push_frontend.Dockerfile、开发用 dev.docker-compose.yml,以及示例编排 docker_example/docker-compose.yml。Makefile 中 docker_builddocker_compose_up 等目标可直接复用这些文件(默认容器运行时为 podman,可用 DOCKER=docker make docker_build 切换)。

安全、部署与后续学习

  • 安全:漏洞报告与安全策略见 SECURITY.md;源码层面,langflow run 默认设置 forwarded_allow_ips="" 使 ProxyHeadersMiddleware 不信任任何来源的 X-Forwarded-For,以防止针对登录限流的 IP 伪造(见 main.py 注释),部署在可信代理之后时通过 rate_limit_trust_proxy 显式开启。
  • 云部署:Langflow 为完全开源项目,支持部署到主流云平台,仓库文档目录 docs/docs/Deployment/ 下有 Docker、Kubernetes、GCP、Railway、Render、Nginx SSL 等十余篇分场景指南,入口为 部署总览
  • 贡献:开发环境与 PR 规范见 CONTRIBUTING.mdDEVELOPMENT.md;测试可通过 make tests(单测 + 集成测试 + 覆盖率)、make unit_testsmake integration_tests_no_api_keys 等目标执行(Makefile)。
  • 版本机制make patch v=<version> 目标(Makefile)会把版本号同步到主包、langflow-baselfx、组件索引 component_index.json、SDK 与前端 package.json 等至少 7 个文件并做逐项校验——这也解释了为什么安装后各包版本严格对齐(langflow 1.12.0 依赖 langflow-base~=1.12.0)。

小结

Langflow 提供了四条由轻到重的启动路径:

  1. Langflow Desktop:零依赖,最快体验;
  2. uv pip install langflow -U + uv run langflow run:README 推荐的日常使用方式,7860 端口即开即用;
  3. make run_cli / make backend:源码级运行与热重载开发,LFX_DEV 支持组件动态加载;
  4. docker run -p 7860:7860 langflowai/langflow:latest:生产与 CI 环境的标准容器化方式。

理解了 langflow run 背后的 Typer 参数体系、平台分叉的 Gunicorn/uvicorn 启动策略、LANGFLOW_JOB_QUEUE_TYPE=redis 的多 Worker 前提以及 --deployment-profile prod 预检机制后,你可以按部署规模与安全要求,精确地选择并调优 Langflow 的运行形态。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
527
590
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
889
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
981
502
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384