py项目工作,但pyinstaller给出了与pulp相关的错误信息。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了py项目工作,但pyinstaller给出了与pulp相关的错误信息。相关的知识,希望对你有一定的参考价值。
我正在做一个用纸浆进行线性优化的项目。当我正常 "运行 "这个文件时,它工作得很好,但当我试图将它转换成一个.exe文件时,我遇到了一些问题,用 pyinstaller.如果我从命令提示符运行.exe文件,都会报错。
Traceback (most recent call last):
File "price.py", line 116, in <module>
File "site-packagespulppulp.py", line 1713, in solve
AttributeError: 'NoneType' object has no attribute 'actualSolve'
[9468] Failed to execute script price
代码的一部分,我有一个问题。
#type of problem
group_division = pulp.LpProblem("Group_division", pulp.LpMinimize)
#objective function to minimize
group_division += objectiveFunction(external_groups, internal_groups)
#specify the maximum number of groups
group_division += sum([x[group] for group in external_groups]) <= max_groups,
"Maximum_number_of_groups"
#every thickness must appear once
for cutType in cutTypes:
group_division += oneCutConstraint(x, y, external_groups, internal_groups, cutType) ==
1,"Must_appear_%s"%cutType
#solve the problem
group_division.solve()
答案
当你从你的python源中使用pulp时,解算器是可用的,因为那个解算器是唯一一个与pulp一起使用的。但是当你运行 pyinstaller 时,它就不再可用了(因为你没有明确告诉 pyinstaller 复制它)。
当用 pyinstaller 打包 pulp 时,你需要告诉 pyinstaller 也要得到 pulp 附带的 CBC 解算器的目录。如果没有,你将只得到python代码,然后你的打包版本将找不到CBC解算器。
假设你有一个 config.spec
pyinstaller的文件,你必须把它编辑成类似下面的东西(至少我觉得这样的东西是有效的)。
import sys
import os
block_cipher = None
def get_pulp_path():
import pulp
return pulp.__path__[0]
path_main = os.path.dirname(os.path.abspath(sys.argv[2]))
a = Analysis(['MAIN_SCRIPT.py'],
pathex=[path_main],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
a.datas += Tree(get_pulp_path(), prefix='pulp', excludes=["*.pyc"])
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(pyz, a.scripts, exclude_binaries=True, name='NAME', debug=False, strip=False, upx=True, console=True)
coll = COLLECT(exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, name='NAME')
然后运行
pyinstaller -y config.spec
以上是关于py项目工作,但pyinstaller给出了与pulp相关的错误信息。的主要内容,如果未能解决你的问题,请参考以下文章
Python利用pyinstaller工具将py文件打包成.exe可执行文件
PyInstaller无法创建base_library.zip