我正在尝试通过使用Replit平台(https://replit.com/)中的PuLP库来解决一个非常简单的线性规划问题。我以前做过这个过程,但就在最近我遇到了这个问题。 首先,我使用 Python 模板创建一个 Repl,导入 PuLP 包,在正确定义问题后,当我运行求解器(CBC - 默认情况下是求解器)时,我在".solve()"参数上出现一个非常奇怪的错误。
我不认为问题出在代码中,因为当我在较旧的 Python Repl 中运行完全相同的 PuLP 代码时,它运行良好。 我认为当前的 Repl 使用的是 Python 3.8 和 PuLP 2.6,而旧的 Repl 使用的是 PuLP 1.6.10(我不确定 Python 版本,也不确定如何检查它)。新旧 Repls 中的打包程序文件(poetry.lock 和 pyproject.toml)是不同的。
完整代码为:
import pulp
x=pulp.LpVariable.dicts('x',range(2),cat=pulp.LpContinuous)
model=pulp.LpProblem('test',pulp.LpMaximize)
model += 4*x[0]+3*x[1]
model += 2*x[0]+x[1]<=10
model += 3*x[0]-2*x[1]<=20
status=model.solve()
我得到的错误是:
回溯(最近一次调用):文件 "main.py",第 12 行,在 status=model.solve() 文件 "/(...)/lib/python3.8/site-packages/pulp/pulp.py",第 1913 行,在求解中 status=solver.actualSolve(self,**kwargs) File "/(...)/lib/python3.8/site-packages/pulp/apis/coin_api.py",第 137 行, in actualSolve return self.solve_CBC(lp,**kwargs) File "/(...)/lib/python3.8/site-packages/pulp/apis/coin_api.py",第 198 行, 在solve_CBC raise PulpSolverError(pulp.apis.core.PulpSolverError: 纸浆:尝试执行时出错,请使用 msg=True 了解更多详细信息 (...)
完整错误输出注意:我尝试添加 msg=True,但日志中没有产生更多信息
我也尝试在新项目中使用旧版本的 PuLP,但使用该版本导入 PuLP 时出错。
您是否知道是否有办法更改 Repl 项目定义,以便能够在 Replit 的当前 Python 模板中使用 PuLP?照原样,PuLP 现在似乎在 Python Repls 中不起作用......
供将来参考:请将完整的错误输出作为文本复制并粘贴到您的问题中(在其前面放置一个>
以将其标记为块引用。
在这种情况下,重要的位位于顶部。cbc
使用的已编译共享库使用libstdc++
找不到所需的正确glibc
(版本 2.33)。 您需要针对实际使用的glibc
版本或glibc
2.33 编译libstdc++
。 由于我不知道它如何与nix
/NixOS配合使用,所以我无法告诉您如何做到这一点。