标题: 在鸿蒙PC上安装langchain,解决rust模块安装失败: Failed to build 'pydantic-core'
时间: 4小时前发布,30分钟前修改
完整安装步骤在最后。
Failed to build 'pydantic-core'
下载这个脚本并运行,然后再用 pip install langchain --verbose 安装就行了。
https://gitcode.com/hu60cn/ohos-script/blob/master/ohos-fix-pip-rust-install.sh
注意:修复只会部署到目前正在使用的venv里,切换venv需要重新部署。
在脚本的注释里可见:
# OpenHarmony pip "rust 源码构建失败" 一键修复脚本(部署 / 卸载)
#
# 背景:
# OpenHarmony 内核禁止直接执行 /lib/ld-musl-aarch64.so.1 (EACCES)。
# 而 setuptools/packaging 在 bdist_wheel.get_tag() 中会通过
# packaging._musllinux._get_musl_version() 直接 spawn 该 loader 探测 musl
# 版本, 导致任何"非纯 Python"包(pydantic-core / maturin 等 rust 扩展)的
# 源码 wheel 构建失败:
# error: [Errno 13] Permission denied: '/lib/ld-musl-aarch64.so.1'
#
# 修复原理:
# 在解释器启动时(经 site-packages 中的 .pth)包装 subprocess.run:
# 当命令恰好是 /lib/ld-musl-aarch64.so.1 时, 直接返回伪造的 musl 版本输出
# (格式与真实 loader 一致), 其余调用原样转发。纯标准库, 无副作用。
#
# 用法:
# ./ohos-script/ohos-fix-pip-rust-install.sh # 部署修复(默认)
# ./ohos-script/ohos-fix-pip-rust-install.sh --install # 同上
# ./ohos-script/ohos-fix-pip-rust-install.sh --restore # 卸载修复
# ./ohos-script/ohos-fix-pip-rust-install.sh --status # 查看部署状态
# ./ohos-script/ohos-fix-pip-rust-install.sh --help # 帮助
#
# 环境变量:
# PYTHON 指定要部署到的 python 解释器(默认自动探测 python3 / python)
#
# 部署产物(写入目标 python 的 site-packages, 均为新增文件, 不改动现有文件):
# ohos_musl_fix.pth 一行: import _ohos_musl_fix
# _ohos_musl_fix.py 补丁实现
安装Harmonybrew:https://harmonybrew.atomgit.com/
安装python和rust编译环境,以及pip自动签名插件
brew install -y python3 ohos-pip-autosign rust ohos-sdk devel-base llvm-gcc-compat cmake uname-is-linux
uname-is-linux 把系统伪装成Linux,避免编译报错:在步骤2的uname-is-linux安装完成后重新打开终端,然后执行以下命令:
export LD_PRELOAD=$HOME/.harmonybrew/opt/uname-is-linux/lib/libuname.so
uname -a
应该会显示Linux而非HarmonyOS。如果还是显示HarmonyOS,请重新打开终端。
# 创建 venv 到 .venv 目录
python3 -m venv .venv
# 激活 venv
source .venv/bin/activate
# 激活自动签名工具
ohos-pip-autosign activate
git clone --depth=1 https://gitcode.com/hu60cn/ohos-script.git
source .venv/bin/activate
./ohos-script/ohos-fix-pip-rust-install.sh
source .venv/bin/activate
ohos-pip-autosign activate
export LD_PRELOAD=$HOME/.harmonybrew/opt/uname-is-linux/lib/libuname.so
pip install langchain --verbose
『回复列表(0|隐藏机器人聊天)』