在AWS Lambda上找不到Setuptools

Jam*_*aga 6 python pip amazon-web-services aws-lambda

我正在尝试使用AWS Lambda来做一些python包内省.

我想要做的是,在git push上,检查一个包,安装它的依赖项(内省需要包依赖项),然后运行工具.AWS默认情况下没有安装pip(你应该捆绑你自己的依赖项) - 所以我将pip与我的lambda函数捆绑在一起.

除了尝试安装包依赖项之外,我的lambda的每个其他部分都可以工作.尝试使用带有签出包的捆绑pip时,尝试运行setuptools失败:

Collecting alembic==0.8.3 (from -r /tmp/tmpnx0tY0/requirements.txt (line 1)) 
Downloading alembic-0.8.3.tar.gz (935kB) 
Complete output from command python setup.py egg_info: 
Traceback (most recent call last): 
File "<string>", line 1, in <module> 
ImportError: No module named setuptools 
 ---------------------------------------- 
Command "python setup.py egg_info" failed with error code 1 in /tmp/tmp30m2KN/alembic
Run Code Online (Sandbox Code Playgroud)

我用尽了一切:当前路径(与setuptools的)添加到路径,setuptools的拷贝到临时目录,运行pip install setuptools,使用合格的选项--global-options,试图pOpen用ENV指定PYTHONPATH,甚至试图使用旧版本PIP的搭配:pip install -r requirements.txt --download --no-install.似乎没什么用.

如何才能python setup.py egg_info成功找到setuptools?

小智 0

您是否考虑过使用 Jenkins(或任何其他 CI 工具)连接到 Git 存储库,在推送时构建存储库,然后在运行之前将打包的 lambda 及其所有依赖项上传到 S3?

在 AWS Lambdas 中,您只能将文件下载到 /tmp 文件夹,并且空间限制为 50mb。这 50mb 还包括 lambda 函数消耗的空间。Lambda 被压缩并且不包含 pip 是有原因的。