python - 使用 Lambda 层(Python)时无法访问 Paramiko 的属性/子模块
问题描述
我对 python 还很陌生,所以如果我使用了错误的术语,请原谅我。
我有一个安装了 Paramiko 的 Lambda 层。我通过创建一个目录 python/lib/python3.8/site-packages 并使用 pip(或通常是 python3.8 -m pip)将 Paramiko 安装到 site-packages 目录中来做到这一点。(我也安装到 python/lib/python3.8/site-packages/paramiko,但问题仍在继续。)
每当我尝试使用以下代码时:
import paramiko
client=paramiko.client.SSHClient()
我收到以下错误:
{
"errorMessage": "module 'paramiko' has no attribute 'client'",
"errorType": "AttributeError",
"stackTrace": [
" File \"/var/lang/lib/python3.8/imp.py\", line 234, in load_module\n return load_source(name, filename, file)\n",
" File \"/var/lang/lib/python3.8/imp.py\", line 171, in load_source\n module = _load(spec)\n",
" File \"<frozen importlib._bootstrap>\", line 702, in _load\n",
" File \"<frozen importlib._bootstrap>\", line 671, in _load_unlocked\n",
" File \"<frozen importlib._bootstrap_external>\", line 783, in exec_module\n",
" File \"<frozen importlib._bootstrap>\", line 219, in _call_with_frames_removed\n",
" File \"/var/task/lambda_function.py\", line 9, in <module>\n test=paramiko.client.SSHClient()\n"
]
}
我尝试了很多方法来修复,例如在 Amazon Linux 2 机器上而不是我的 Macbook 上执行此操作,将 pip 版本更改为 3.8,更改目录结构/代码的细节。(例如 paramiko.SSHClient 代替)。
我在这里读到的一个建议是:无法使用 python 库:'paramiko' with AWS Lambda
或者您包含在压缩文件中的依赖项之一被编译到您机器的架构中,这通常与托管 lambda 函数的架构不同。在这种情况下,您应该找出托管 lambda 函数的 Linux 版本,并获得可供 AWS lambda 使用的预编译版本。
如果以上是问题,我该怎么做?
解决方案
推荐阅读
- node.js - Heroku MERN 应用程序不会在初始渲染时渲染模板
- parsing - 为什么在这个例子中尝试不触发回溯
- ruby-on-rails - 使用 Gmail API 发送回复时出现未授权错误
- javascript - 如何让此代码适用于子文件夹(主“命令”文件夹内的文件夹)?
- android - 如果设置了 android:sharedUserId,SpeechRecognizer 将无法在 Android 11 上运行
- swiftui - 如何在本地更改导航栏背景颜色
- reactjs - 从 React 中的 API 过滤数组数据时,如何在表单提交中使用startsWith?
- android - 无法放大/缩小:始终专注于我的位置颤动
- c++ - 安装 gtkmm / gtk+ 失败
- python - 列出切片 json.loads 文件