在鸿蒙PC上通过pip安装langchain,解决rust模块安装失败: Failed to build 'pydantic-core'

@Ta 16小时前发布,7小时前修改 66点击

完整安装步骤在最后。

问题现象

Failed to build 'pydantic-core'

screenshot_20260820_115335_com.huawei.hmos.hishell.jpg(1.62 MB)

解决方法

下载这个脚本并运行,然后再用 pip install langchain --verbose 安装就行了。

https://gitcode.com/hu60cn/ohos-script/blob/master/ohos-fix-pip-rust-install.sh

注意:修复只会部署到目前正在使用的venv里,切换venv需要重新部署。

screenshot_20260820_133151_com.huawei.hmos.hishell.jpg(1.4 MB)

screenshot_20260820_133514_com.huawei.hmos.hishell.jpg(1.36 MB)

修复原理

在脚本的注释里可见:

# 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   补丁实现

完整安装步骤

  1. 安装Harmonybrew:https://harmonybrew.atomgit.com/

  2. 安装python和rust编译环境,以及pip自动签名插件

brew install -y python3 ohos-pip-autosign rust ohos-sdk devel-base llvm-gcc-compat cmake uname-is-linux
  1. 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,请重新打开终端。

screenshot_20260815_154716.jpg(55.66 KB)

  1. 创建 python venv
# 创建 venv 到 .venv 目录
python3 -m venv .venv

# 激活 venv
source .venv/bin/activate

# 激活自动签名工具
ohos-pip-autosign activate
  1. 在 venv 中打 rust 安装补丁
git clone --depth=1 https://gitcode.com/hu60cn/ohos-script.git
source .venv/bin/activate
./ohos-script/ohos-fix-pip-rust-install.sh
  1. 安装 langchain
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|隐藏机器人聊天)
帖子没有回复
添加新回复
回复需要登录