我正在尝试使用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?
答案 0 :(得分:0)
您是否考虑过使用Jenkins(或任何其他CI工具)挂钩到您的Git存储库,在push上构建存储库,然后在运行之前将包含所有依赖项的打包lambda上传到S3?
在AWS Lambdas中,您只能将文件下载到/ tmp文件夹,并且您的空间限制为50mb。这50mb还包括lambda函数消耗的空间。 Lambdas是拉链的,并且由于某种原因不包含pip。
答案 1 :(得分:0)
我使用了Lambda,我不认为Lambda支持它。您需要使用自己的CI工具(Jenkins是一个不错的选择)。否则,您需要在本地构建它,然后使用AWS Lambda插件上传安装了依赖项的代码。