我使用 pip install cryptography -t .
在我的Windows命令提示符中安装了 cryptography
,然后将其压缩并上传到AWS Lambda中,但无论何时在AWS Lambda中运行代码,都会出现以下错误:
No module named 'cryptography.hazmat.bindings._padding
请有人帮我解决这个错误。
我在Windows系统中使用Python 3.6。
我使用 pip install cryptography -t .
在我的Windows命令提示符中安装了 cryptography
,然后将其压缩并上传到AWS Lambda中,但无论何时在AWS Lambda中运行代码,都会出现以下错误:
No module named 'cryptography.hazmat.bindings._padding
请有人帮我解决这个错误。
我在Windows系统中使用Python 3.6。
将加密软件包升级解决了我的问题。
pip3 install --upgrade cryptography
简而言之:如果可能的话,你应该始终在运行时直接正确安装cryptography
,而不是打包和部署;否则,需要手动为目标运行时构建它(包括所有系统外部依赖链接)。在本地系统上使用pip install cryptography -t
安装,然后打包到目标系统可能会导致依赖问题。
cryptography
依赖于许多非Python的外部模块和系统依赖、工具和二进制文件,这些必须被安装、兼容并在执行时(Lambda运行时)对运行环境可用才能正常工作。
当模块在本地安装后打包并部署到另一个运行时时,通常该运行时没有这些依赖项,或者存在不兼容的依赖项;这可能会导致问题。修复这个问题的最佳方法是直接在目标系统上通过pip install
(先升级pip)安装cryptography
(不要使用.zip文件进行部署)。pip install
将正确安装所有兼容的依赖项。
pip install
,您应该尝试使用相同的系统版本和相同的Python版本(可以使用EC2虚拟机)构建.zip包,以便最终导出的捆绑包与目标系统工具和依赖项兼容。我曾经遇到过类似的问题,后来发现是因为我创建 Lambda 函数的层时出了问题。
你上传的库的路径应该是 [root]/python/lib/python[version].[minor version]/site-packages
如果以其他方式上传,Lambda 就无法识别依赖项。
这对于 Python3.9 有效,在加密库的情况下,我上传的 Lambda 层的 zip 文件结构是 /python/lib/python3.9/site-packages/[cryptography dump]。
希望这可以帮到你。
升级到最新版本的
python -m pip install --upgrade setuptools
python -m pip install –-upgrade pip
python -m pip install –-upgrade cryptography
python -m pip install --upgrade cffi
验证部署程序并对所需包进行必要的更新