FC 上部署的 flask,依赖了 cryptography,运行时报错:
{ "errorMessage": "Unable to import module 'index'", "errorType": "ImportModuleError", "stackTrace": [ "ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /code/cryptography/hazmat/bindings/_rust.abi3.so)" ] }
这是 runtime 的问题吗?能升级到 debian10 吗?
这个错误信息表示您的Flask应用程序中使用的cryptography库在运行时找不到它所需的glibc库。glibc库是C语言库的一部分,用于提供内存管理、文件I/O等功能。 解决方法之一是安装glibc库 sudo apt-get update sudo apt-get install libglib2.0-0 这将安装glibc库,并为您的Flask应用程序提供所需的依赖关系。 另一种解决方法是使用不同的cryptography库,例如pycryptodome库。
此错误是因为您的函数依赖的 cryptography 库需要的 GLIBC 版本高于 FC 运行环境提供的版本。
为了解决该问题,您可以使用自定义运行环境。FC 支持自定义运行环境来满足函数运行时依赖特定的库或工具。您可以基于相应操作系统镜像,安装所需的库和工具,并打包成新的运行环境镜像,然后在函数配置中指定相应的镜像以使用自定义运行环境。
在您的情况下,建议使用 debian10 镜像作为基础镜像,安装您的 flask 应用所需的依赖库和工具,然后将整个环境打包成新的镜像,并在函数配置中指定该镜像。
自定义运行环境需要您具有一定的 Linux 系统管理经验,并且需要您能够熟练地使用 Docker 技术来构建和管理镜像。如果您不具备相关技术和经验,可能需要寻求专业人士的帮助。
您的错误提示中提到了 /lib/x86_64-linux-gnu/libc.so.6: version
GLIBC_2.28' not found,这是由于 FC 运行时使用的操作系统中缺少
GLIBC_2.28` 库的版本。
目前 FC 运行时使用的是阿里云自研的 Linux 版本,升级到 Debian 10 并不可行。但是,根据实际情况,您可以尝试以下几种方法来解决您的问题:
尝试升级 cryptography 包的版本,以兼容当前的 FC 运行时。
尝试使用 aliyun-python-sdk-fc 等工具将依赖包打包为应用程序包,并在 FC 上运行,这样可以避免以下环境库版本的冲突问题。
为您的应用程序选择一个不依赖于 GLIBC_2.28
版本的加密库,以避免环境库版本的冲突问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。