Adi*_*M P 6 python pip amazon-web-services aws-lambda serverless-framework
我正在使用AWS Lambda的无服务器框架.当使用pip.conf时pip3.6,我想将"target-dir"设置为"当前目录".
将其设置为"." 像这样:
[global] target = "."
不起作用,因为pip .在我的virtualenvroot中创建了一个名为" " 的新目录,并继续在那里安装东西.我试过没有引号.我也试过了./,但这会创建一个名为的目录.".
我使用virtualenv(通过venv使用python3.6),但我需要的软件包住在virtualenv中的根目录下,当我安装,因为AWS LAMBDA的局限性点子.
Dav*_*apa -1
[已编辑]
pip.conf实际上是一个标准的 INI 文件,因此它只允许绝对路径(->绝对路径,但它以 lambda 函数的根为根);而且它不能在内部使用变量。
因此,您应该在选项中包含完整路径(从根目录“/”开始)target=。
为此,您可以尝试使用(或类似的方法)检索 AWS Lambda 中的当前目录:
lambdash pwd
Run Code Online (Sandbox Code Playgroud)
即,尝试获取 shell 并调用pwd(= 打印工作目录)。使用此信息填写变量的正确路径target。
但是,可以通过编程方式创建/更改 INI 文件。
因此,您可以将项目创建为可分发项目(如 pypi 或其他 DVCS 的项目)并设置一个setup.py
可以在此处找到准备项目进行分发的教程。关于setup.py的具体讨论可以在这里找到
可以添加的功能setup.py如下(自由调整):
# remember to add the imports:
from setuptools import setup
from setuptools.command.install import install
import ConfigParser
import io
class CustomInstallCommand(install):
"""Customized setuptools install command."""
def run(self):
config= ConfigParser.RawConfigParser()
config.read(r'pip.conf')
config.set('target', os.environ['LAMBDA_TASK_ROOT'])
with open(r'pip.conf', 'wb') as configfile:
config.write(configfile)
install.run(self)
setup(
...
Run Code Online (Sandbox Code Playgroud)
(查看上述教程以了解 setuptools 在您的项目中的使用情况)
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |