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

M3 Max Mac使用pydfs_lineup_optimizer遇CBC求解器CPU类型错误

问题

在M3 Max Mac上使用Python包pydfs_lineup_optimizer(Python版本3.12.2)时,运行出现以下错误:

Traceback (most recent call last):
  File "/private/tmp/test.py", line 6, in <module>
    for lineup in optimizer.optimize(10):
  File "/private/tmp/venv/lib/python3.12/site-packages/pydfs_lineup_optimizer/lineup_optimizer.py", line 417, in optimize
    solved_variables = solver.solve()
                       ^^^^^^^^^^^^^^
  File "/private/tmp/venv/lib/python3.12/site-packages/pydfs_lineup_optimizer/solvers/pulp_solver.py", line 47, in solve
    self.prob.solve(self.LP_SOLVER)
  File "/private/tmp/venv/lib/python3.12/site-packages/pulp/pulp.py", line 1737, in solve
    status = solver.actualSolve(self, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/venv/lib/python3.12/site-packages/pulp/apis/coin_api.py", line 101, in actualSolve
    return self.solve_CBC(lp, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/venv/lib/python3.12/site-packages/pulp/apis/coin_api.py", line 152, in solve_CBC
    cbc = subprocess.Popen(args, stdout = pipe, stderr = pipe, stdin=devnull)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.12/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/subprocess.py", line 1026, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/opt/homebrew/Cellar/python@3.12/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/subprocess.py", line 1953, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 86] Bad CPU type in executable: '/private/tmp/venv/lib/python3.12/site-packages/pulp/apis/../solverdir/cbc/osx/64/cbc'

该包在M3 Pro上可正常运行,寻求解决办法。

解决方法
  • 更换ARM原生CBC求解器:错误根源是pulp自带的CBC为x86架构,与M3 Max的ARM架构不兼容。通过Homebrew安装ARM版本的CBC:

    brew install cbc
    

    安装完成后,在代码中指定使用系统级CBC求解器:

    from pulp import CBC_CMD
    from pydfs_lineup_optimizer import get_optimizer, Site, Sport
    
    optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
    optimizer.set_solver(CBC_CMD(path="/usr/local/bin/cbc"))
    
  • 创建Rosetta 2虚拟环境:利用Rosetta 2兼容x86架构,创建对应虚拟环境运行代码:

    1. 右键终端应用→显示简介→勾选「使用Rosetta打开」,启动兼容终端
    2. 在该终端下创建虚拟环境并激活:
      python3 -m venv rosetta_venv
      source rosetta_venv/bin/activate
      
    3. 重新安装依赖包:
      pip install pydfs_lineup_optimizer
      

    之后在该虚拟环境中运行代码即可。

  • 降级Python版本:部分旧版Python对ARM架构兼容性更好,尝试降级到Python 3.11:

    brew install python@3.11
    python3.11 -m venv py311_venv
    source py311_venv/bin/activate
    pip install pydfs_lineup_optimizer
    

内容的提问来源于stack exchange,提问作者tera_789

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:46:18