解决pyinstaller打包时遇到的pulp执行错误

背景

最近要使用DEA(数据包络分析)进行效能值的评价,使用了GitHub - araith/pyDEA这个包,这个包使用PulP来进行线性规划求解。在电脑本地进行开发的时候并没有发生错误,可以正常进行计算,但是当使用PyInstaller · GitHub进行打包之后,只要使用到了dea算法,就会发生错误,错误提示如下

Traceback (most recent call last):
  File "flask\app.py", line 2073, in wsgi_app
  File "flask\app.py", line 1518, in full_dispatch_request
  File "flask_cors\extension.py", line 165, in wrapped_function
  File "flask\app.py", line 1516, in full_dispatch_request
  File "flask\app.py", line 1502, in dispatch_request
  File "server.py", line 95, in get_dea_result
  File "utils\dea_util.py", line 159, in get_dea_result_util
  File "utils\dea_util.py", line 76, in run_dea
  File "utils\dea_util.py", line 29, in start
  File "pyDEA\core\models\model_base.py", line 41, in run
  File "pyDEA\core\models\model_base.py", line 62, in run_for_one_DMU
  File "pulp\pulp.py", line 1913, in solve
AttributeError: 'NoneType' object has no attribute 'actualSolve'

解决方法

重点在于最后两行,可以发现这里的pulp报了一个错误,通过对于该错误的查询,在pyinstaller的issuePulp error occurs on executable when running PyInstaller with console option False and onefile · Issue #6359 · pyinstaller/pyinstaller · GitHub中找到了这个错误的解决方法,如下

So collect the data from package (you can also use in spec directly, no need for the round-about way from the stackoverflow):pulp``collect_data_files

pyinstaller --clean --noconfirm --collect-data pulp program.py

关键在于--collect-data pulp 这个命令,添加了该命令之后,就会将pulp进行引入,这个时候再运行就不会报错了。

posted @ 2022-03-13 16:27  haoxuan98  阅读(597)  评论(0)    收藏  举报