无法访问AWS Lambda实例上的Python Pulp solver

2024-10-06 12:25:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python中的Pulp对AWS Lambda进行优化。我已经打包了pulp(压缩内容而不是目录)以及我的lambda_函数并上传了zip。我犯的错误是:

File "/var/task/pulp/pulp.py", line 1664, in solve
status = solver.actualSolve(self, **kwargs)
AttributeError: 'NoneType' object has no attribute 'actualSolve'

我试过这里的修复方法: Importing Python Module "Pulp" on Amazon AWS Lambda特别是试图直接指定解算器,并将解算器(cbc)放入脚本的父目录中,但没有成功。当我尝试直接指定解算器时,我得到了一个不同的错误:

^{pr2}$

我也尝试过直接插入路径,例如: prob.solve(COIN_CMD("/var/task/cbc")) 错误相同(无法执行)


Tags: lambda函数目录aws内容taskvar错误
1条回答
网友
1楼 · 发布于 2024-10-06 12:25:51

我终于解决了,这是一个关于解算器(cbc)的权限问题。这可能与压缩过程有关,我还没有深入了解,但是我可以通过将解算器文件(cbc)复制到/var/tmp(以允许访问),然后将权限更改为可执行的,从而解决了这个问题。我使用的python代码如下所示:

# Copy solver to tmp
copyfile('pulp/solverdir/cbc/linux/64/cbc', '/tmp/cbc')
# Change permissions to executable
mode = os.stat('/tmp/cbc').st_mode
mode |= (mode & 0o444) >> 2    # copy R bits to X
os.chmod('/tmp/cbc', mode)   
# Solve using the newly located cbc solver
prob.solve(COIN_CMD(path="/tmp/cbc"))

相关问题 更多 >