【发布时间】:2016-08-13 14:08:18
【问题描述】:
我正在尝试使用 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 传递选项,尝试使用指定 @987654325 的环境 pOpen @,甚至尝试使用旧版本的 pip:pip install -r requirements.txt --download --no-install。似乎没有任何效果。
我怎样才能得到这个python setup.py egg_info 调用来成功定位setuptools?
【问题讨论】:
-
所以你想在函数运行时在 Lambda 中安装 pip 包?
-
@birnbaum 是的。因为这种自省可能会引入任意数量的软件包,所以我无法提前知道我需要哪些依赖项。解决方案是在运行时安装,但我尝试安装时遇到了这个问题。
-
您是在 lambda 中仅包含 pip,还是使用它打包了整个 virtualenv 目录结构?
标签: python amazon-web-services pip aws-lambda