查看: 277|回复: 3

Python安装langchain卡住排查:自由线程Python导致or

[复制链接]
发表于 昨天 09:00 | 显示全部楼层 |阅读模式
在macOS上使用Python 3.14t(free-threaded版本)安装langchain时,执行pip install langchain可能会卡在Preparing metadata阶段,最终报错Failed to build wheel for orjson。本文从实际日志出发,分析根本原因并给出解决方案。

## 问题现象

执行以下命令后长时间无响应:
  1. pip3 install langchain
复制代码
即使配置了清华源或阿里源,依然卡在:
  1. Preparing metadata (pyproject.toml)
复制代码

## 启用详细日志定位

添加--verbose参数查看具体进度:
  1. pip3 install --verbose langchain -i https://mirrors.aliyun.com/pypi/simple
复制代码
日志显示pip正在编译orjson包,且调用了Rust工具链编译C扩展。编译过程中输出关键信息:
  1. Python reports SOABI: cpython-314t-darwin
  2. Computed rustc target triple: aarch64-apple-darwin
复制代码
其中cpython-314t-darwin中的“t”表示free-threaded(自由线程)Python版本。
编译orjson时出现致命错误:
  1. orjson v3.11.9 does not support free-threaded Python
复制代码
最终构建失败:
  1. error: failed to run custom build command for `orjson v3.11.9`
  2. 💥 maturin failed
  3. Failed to build wheel for orjson
复制代码

## 根本原因

langchain 1.x版本依赖orjson,而orjson 3.11.9及其之前版本不支持free-threaded Python(Python 3.14t)。如果本地Python解释器是free-threaded版本(通过python3 -VV可查看,输出中包含“free threading”字样),pip在安装orjson时就会因编译不通过而卡住或失败。

## 解决方案

切换为常规Python版本(不带free-threading支持)。常规Python版本在python3 -VV输出中不会包含“free threading”标志。

1. 卸载当前free-threaded Python或使用pyenv/virtualenv创建一个常规Python环境。
2. 重新安装langchain:
  1. pip3 install langchain
复制代码
3. 安装成功后,可以继续安装langchain-openai等扩展:
  1. pip3 install -U langchain-openai
复制代码

安装成功日志示例(部分):
  1. Successfully installed ... langchain-1.3.13 langchain-core-1.4.9 ... orjson-3.11.9 ...
复制代码

## 小结

当pip install langchain卡在Preparing metadata时,首先通过--verbose参数获取详细日志,检查Python版本是否为free-threaded。如果是,则需切换到常规Python版本后再安装。该方法同样适用于其他依赖Rust编译的Python包(如orjson、pydantic-core等)。如果需要同时使用free-threaded Python和langchain,可关注后续langchain版本对free-threading的支持更新。
回复

使用道具 举报

发表于 昨天 09:10 | 显示全部楼层

Re: Python安装langchain卡住排查:自由线程Python导致or

感谢分享这个排查经验!free-threaded Python 带来性能优势的同时,确实容易遇到一些第三方包不兼容的问题。你通过 `--verbose` 定位到 `orjson` 编译失败,并明确指出 `language` 的依赖链和 `cpython-314t` 标志,这个分析过程很清晰。对遇到类似卡在 “Preparing metadata” 的朋友来说,先查 Python 版本确实是个高效的思路。
回复 支持 反对

使用道具 举报

发表于 昨天 09:10 | 显示全部楼层

Re: Python安装langchain卡住排查:自由线程Python导致or

感谢分享这么详细的分析过程!之前我也遇到过类似卡在 metadata 的问题,但没往 free-threaded Python 上想,原来 3.14t 的“t”标志是关键。你提供的 `--verbose` 定位思路很实用,以后遇到编译卡住我也可以先检查 SOABI 和 rustc target 了。另外想确认一下:如果暂时不想切换 Python 版本,有没有试过从源码跳过 orjson 编译,比如用 `--no-binary` 或者指定一个支持 free-threading 的 orjson 预发布版?还是说目前只能换回常规版?期待后续 langchain 官方能跟上。
回复 支持 反对

使用道具 举报

发表于 昨天 09:10 | 显示全部楼层

Re: Python安装langchain卡住排查:自由线程Python导致or

感谢楼主的详细排查和分享!这个问题确实很容易踩坑,特别是新接触 free-threaded Python 的用户。你从日志中定位到 `SOABI` 的 `t` 标志再到 `orjson` 的兼容性限制,逻辑很清晰。解决方案也很实用——切换到常规 Python 版本是当前最稳妥的做法。另外提醒一下,如果确实要用 free-threaded 环境,也可以关注 orjson 后续版本是否加入支持,或者尝试寻找不依赖 orjson 的替代方案(不过 langchain 目前还绕不开)。总之,这篇排查过程对遇到类似卡住问题的朋友会很有帮助,感谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-7-17 04:05 , Processed in 0.025372 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部