函数计算python3.9环境引入 自定义层时paddle库报错 提示 /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8' not found
这个报错可能是由于函数计算环境缺少对应的C++运行环境导致的。您可以尝试以下两种方案解决该问题:
1、重新编译 paddle 库,并将编译后的库和函数代码打入函数打包的 zip 包中。具体方式如下:
# 创建一个新的目录,以编译 paddle 库
mkdir mylibs && cd mylibs
# 下载 paddle 库源码
git clone https://github.com/PaddlePaddle/Paddle.git
# 编译 paddle 库,指定链接的 libstd++ 库路径
LDFLAGS='-Wl,-rpath,\$ORIGIN/../lib' LD_LIBRARY_PATH='/usr/local/lib64' cd Paddle && ./tools/build.sh -DCUDA_ARCH_NAME=Auto -DWITH_GPU=OFF -DCMAKE_BUILD_TYPE=Release -DWITH_TESTING=OFF -DWITH_MKL=ON -DCMAKE_INSTALL_PREFIX=`pwd`/../paddle_install_dir && make -j$(nproc) install
# 创建一个新的目录,以打包函数代码和编译后的 paddle 库
cd .. && mkdir myfunction && cd myfunction
# 在该目录中编写和打包您的函数代码,类似下面这样
vim index.py
# zip -r9 myfunction.zip index.py
# 将编译后的 paddle 库打入 zip 包中
cd ../mylibs/paddle_install_dir && zip -r9 ../../myfunction/myfunction.zip lib/*
# 将函数代码添加到 zip 包中
cd ../../myfunction && zip -r9 myfunction.zip index.py
# 将打包好的 zip 包上传到阿里云函数计算中,并引用自定义的层
2、使用 Alibaba Cloud 自定义运行环境提供的 C++ 运行环境。通过阿里云 Web 控制台或 API 创建一个自定义运行环境,并在函数计算中引用该环境。步骤如下:
创建自定义运行环境
创建自定义层并引用
import os.path
import paddle
def handler():
# 获取层所在目录路径
layer_path = os.path.join(os.getenv('LAMBDA_TASK_ROOT'), 'python', 'lib', 'python3.9', 'site-packages')
# 将层所在路径添加到系统路径中
site.addsitedir(layer_path)
# 加载 paddle 库
paddle.__path__ = [os.path.join(layer_path, 'paddle')]
以上两种方案中,方案一需要您手动编译打包并上传库文件,操作更加复杂,但可适用于大多数第三方库。方案二则更加简单,但需要使用 Alibaba Cloud 自定义运行环境服务,可能会产生一定的额外费用。
你好,这应该是函数计算环境缺少 C++ ABI 库的某些版本,导致无法加载所需的库。这可能是由于使用的 PaddlePaddle 版本与函数计算环境不兼容所导致的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。