繁体   English   中英

如何在 python shell AWS Glue 作业中导入外部 python 库

[英]How can I import external python libraries in python shell AWS Glue job

我一直在尝试在 aws glue python shell 作业中导入外部 python 库。

  1. 我已经在 s3 中上传了 Pyodbc 的 whl 文件。
  2. 我在 Glue 作业的附加属性中引用了“python 库路径”中的 s3 路径。
  3. 我还尝试将作业参数 --extra-py-files 的值作为 whl 文件的 s3 路径。
  4. 每当我写“from pyodbc import pyodbc as db”或只是“import pyodbc”时,它总是返回“ModuleNotFoundError:没有名为'pyodbc'的模块”
  5. 日志如下所示:

处理中 ./glue-python-libs-cq4p0rs8/pyodbc-4.0.32-cp310-cp310-win_amd64.whl 安装采集包:pyodbc 安装成功 pyodbc-4.0.32

警告:目录“/.cache/pip”或其父目录不属于当前用户或不可写。 缓存已被禁用。 检查该目录的权限和所有者。 如果使用 sudo 执行 pip,您可能需要 sudo 的 -H 标志。

ModuleNotFoundError 中的文件“/tmp/glue-python-scripts-g_mt5xzp/Glue-ETL-Dev.py”,第 2 行:没有名为“pyodbc”的模块

我正在从这里下载轮文件: https ://pypi.org/project/pyodbc/#files

无论我在胶水作业中引用了多少个版本的 whl 文件,它总是会引发相同的错误。

谁能告诉我哪里出了问题?

我曾尝试遵循 AWS 官方文档中的这些指南 [1]、[2],但在导入某些库(例如 psycopg2)时遇到了一些问题。 最后,我按照 AWS 博客 [3] 中本教程的步骤成功导入了所需的库。 该博客是西班牙语的,但也许您可以设法翻译它。

基本上他们所做的是创建一个 setup.py 脚本,在该脚本上定义所需的库。 之后,他们使用这些库生成一个 .whl 文件,并将该文件上传到 s3 存储桶,Glue Python Shell 脚本从中获取所需的库。

[1] https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html#aws-glue-programming-python-libraries-job

[2] https://docs.aws.amazon.com/glue/latest/dg/add-job-python.html#create-python-extra-library

[3] https://aws.amazon.com/es/blogs/aws-spanish/usando-python-shell-y-pandas-en-aws-glue-para-procesar-conjuntos-de-datos-pequenos-y -中位数/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM