从未在AWS Lambda上找到Setuptools

时间:2016-04-20 17:53:49

标签: python amazon-web-services pip 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

我已经尝试了一切:将当前路径(使用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?

2 个答案:

答案 0 :(得分:0)

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

在AWS Lambdas中,您只能将文件下载到/ tmp文件夹,并且您的空间限制为50mb。这50mb还包括lambda函数消耗的空间。 Lambdas是拉链的,并且由于某种原因不包含pip。

答案 1 :(得分:0)

我使用了Lambda,我不认为Lambda支持它。您需要使用自己的CI工具(Jenkins是一个不错的选择)。否则,您需要在本地构建它,然后使用AWS Lambda插件上传安装了依赖项的代码。