You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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'
    
  • 系统环境变量设置(永久生效):
    1. 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
    2. 在「系统变量」区域点击「新建」,变量名填SCIPOPTDIR,变量值填C:\Program Files\SCIPOptSuite 8.0.3
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:55:03