[英]How to get PyPi link, license, code and homepage of Python/Pip packages?
[英]How to turn pip / pypi installed python packages into zip files to be used in AWS Glue
我正在使用AWS Glue和PySpark ETL脚本,并希望使用辅助库(如google_cloud_bigquery
作为PySpark脚本的一部分。
文档说明这应该是可能的 。 之前的Stack Overflow讨论 ,特别是其中一个答案中的一个评论似乎提供了额外的证据。 但是, 如何做到这一点我不清楚。
因此,目标是将pip install
ed包转换为一个或多个zip文件,以便能够在S3上托管包并指向它们,如下所示:
s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip
应当如何做没有明确规定的任何地方我已经看了。
即如何pip install
包然后将其转换为我可以上传到S3 的zip文件 ,以便PySpark可以将它与这样的S3 URL一起使用?
通过使用命令pip download
我已经能够获取libs,但默认情况下它们不是.zip文件,而是.whl文件或.tar.gz
..所以不知道如何将它们变成AWS Glue可以消化的zip文件。 也许有名为.tar.gz我可能只是tar -xf
他们,然后zip
他们回来了,但如何WHL文件?
因此,在浏览过去48小时内我在评论中提供的材料后,我就是这样解决问题的。
注意:我使用Python2.7,因为这是AWS Glue似乎附带的内容。
按照E. Kampf博客文章“Best Practices Writing Production-Grade PySpark Jobs”中的说明和这个堆栈溢出答案 ,以及由于随机错误的一些调整,我做了以下内容:
mkdir ziplib && cd ziplib
创建一个requirements.txt
文件,每行包含包的名称。
在其中创建一个名为deps的文件夹:
mkdir deps
virtualenv -p python2.7 .
bin/pip2.7 install -r requirements.txt --install-option --install-lib="/absolute/path/to/.../ziplib/deps"
cd deps && zip -r ../deps.zip . && cd ..
..所以现在我有一个zip文件,如果我把它放到AWS S3上并从AWS Glue上的PySpark指向它,它似乎工作。
但是 ,我无法解决的问题是, 由于某些软件包(例如Google Cloud Python客户端库)使用的是所谓的隐式命名空间软件包(PEP-420) ,因此它们没有__init__.py
文件通常出现在模块中,因此import语句不起作用 。 我在这里不知所措。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.