我已经尝试了很多类似问题的解决方案,但我发现它们不够具体或者它们已经过时(或者我可能不够敏锐!)
我正在打包一些 Python 代码以在 AWS Lambda 上运行,它使用了许多包,包括 Numpy、Pillow、moderngl 和 glcontext。我能够将 Python 包打包为层,并且可以导入所有内容,但一直遇到此错误:
"errorMessage": "libGL.so.1.2.0 not found in /lib, /usr/lib or LD_LIBRARY_PATH"
它只是“libGL.so”,直到我将代码中的以下行从
moderngl.create_standalone_context()
至
moderngl.create_standalone_context(libgl='libGL.so.1.2.0')
基于此。
还:
从moderngl文档中我看到了这一行:
请注意,libGL.so 由后端动态加载。
我认为这是我理解这里发生的事情以及如何告诉 Lambda 寻找这个库的关键,但是我仍然无法让它工作!我尝试过更新函数中的环境变量,用 Docker 打包层,用包含 libGL.so 文件的代码打包一个 lib 文件,这样的例子不胜枚举。
如果有人可以通过向我指出解决方案或帮助我了解正在发生的事情来帮助我,我将不胜感激!谢谢!
完全例外:
{
"errorMessage": "libGL.so.1.2.0 not found in /lib, /usr/lib or LD_LIBRARY_PATH",
"errorType": "Exception",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 394, in lambda_handler\n run(output_file)\n",
" File \"/var/task/lambda_function.py\", line 386, in run\n CUSTOM_PACKAGE(path=\"sample\", dest=save_output_to, glasses_config=glasses_config, additional_info=additional_info)\n",
" File \"/var/task/lambda_function.py\", line 377, in CUSTOM_PACKAGE\n fig = CUSTOM_PACKAGE2(dd, face=face , style=style, glasses_config=glasses_config, additional_info=additional_info, img_scale=img_scale,interpolation=interpolation, dpi=dpi, samples=samples, table_props=table_props, centers_move_y=centers_move_y)\n",
" File \"/var/task/lambda_function.py\", line 236, in CUSTOM_PACKAGE2\n img_k,box_k = create_back_image(dd,xMinMax_k,img_scale=img_scale,samples=samples)\n",
" File \"/var/task/lambda_function.py\", line 48, in create_back_image\n return draw_view(dd, eye, target, up, xMinMax, image_size, samples=samples)\n",
" File \"pltgl/pltgl.py\", line 85, in draw_view\n return render_to_image(pnc, lookat_front, xMinMax, image_size, lightPos=eye, is_wireframe=is_wireframe,samples=samples)\n",
" File \"pltgl/pltgl.py\", line 29, in render_to_image\n ctx = moderngl.create_standalone_context(libgl='libGL.so.1.2.0')\n",
" File \"/opt/python/lib/python3.8/site-packages/moderngl/context.py\", line 1664, in create_standalone_context\n ctx.mglo, ctx.version_code = mgl.create_context(glversion=require, mode=mode, **settings)\n",
" File \"/opt/python/lib/python3.8/site-packages/glcontext/__init__.py\", line 83, in create\n return x11.create_context(**kwargs)\n"
]
}