Python使用pyscipopt时遇OSError:WinError123路径语法错误求助
解决pyscipopt的OSError路径错误问题
错误原因
你遇到的OSError: [WinError 123]是Windows系统下路径解析错误导致的:
- 路径中的反斜杠未正确转义,或环境变量中同时设置多个SCIP路径引发冲突
- pyscipopt无法正确识别包含空格的路径(比如
Program Files)
解决方案
1. 正确设置SCIP环境变量
选择以下一种方式配置SCIPOPTDIR:
- 临时设置(仅当前Python会话有效):
在导入pyscipopt前添加代码:import os # 用原始字符串r''避免反斜杠转义问题,选择其中一个有效的SCIP安装路径 os.environ['SCIPOPTDIR'] = r'C:\Program Files\SCIPOptSuite 8.0.3' - 系统环境变量设置(永久生效):
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」区域点击「新建」,变量名填
SCIPOPTDIR,变量值填C:\Program Files\SCIPOptSuite 8.0.3 - 重启Python编辑器/终端,使设置生效
2. 路径注意事项
- 只保留一个有效的SCIP安装路径,不要同时设置多个路径(比如移除错误信息中的
D:\softwares\scip-8.0.3\bin) - 确认路径下的
bin目录存在scip.exe可执行文件
3. 修正代码中的缩进与变量问题
你的代码存在缩进错误和未定义的f_i,以下是修正后的完整代码:
import os os.environ['SCIPOPTDIR'] = r'C:\Program Files\SCIPOptSuite 8.0.3' import pyscipopt model = pyscipopt.Model() # 禁用预求解,按原模型求解 model.setParam('presolving/maxrounds', 0) # 定义变量 n = 3 # 行数 m = 4 # 列数 x = [[model.addVar(vtype='B', name=f'x_{i}_{j}') for j in range(m)] for i in range(n)] # 定义目标函数系数矩阵(示例值,可根据实际需求修改) f = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] ] z3 = 0 for i in range(n): for j in range(m): z3 += f[i][j] * x[i][j] model.setObjective(z3, sense='minimize') model.optimize() if model.getStatus() == 'optimal': # 获取最优解 solution = [[model.getVal(x[i][j]) for j in range(m)] for i in range(n)] print('最优解:') for i in range(n): for j in range(m): print(f'x_{i}_{j} = {solution[i][j]}') else: print('未找到可行解。') model.freeProb()
内容的提问来源于stack exchange,提问作者sahraoui khaoula
相关产品推荐
相关产品推荐

