pycharm项目适用于'run',但pyinstaller --onefile会产生与纸浆相关的错误

问题描述 投票:1回答:1

我一直致力于一个项目,用户可以通过纸浆上传文件进行分析。当我在pycharm中运行项目时,它工作正常,但在我使用pyinstaller构建一个--onefile后...我得到以下回溯

Exception in Tkinter callback
Traceback (most recent call last):
  File "tkinter\__init__.py", line 1702, in __call__
  File "example.py", line 29, in get_file
  File "pydfs_lineup_optimizer\lineup_optimizer.py", line 351, in optimize
  File "pydfs_lineup_optimizer\solvers\pulp_solver.py", line 39, in solve
  File "site-packages\pulp\pulp.py", line 1664, in solve
AttributeError: 'NoneType' object has no attribute 'actualSolve'

这是我遇到问题的一段代码:

import tkinter as tk
from tkinter import *
from tkinter import filedialog
from tkinter.filedialog import askopenfilename
import csv
import time
import os, sys
import PIL
from PIL import Image, ImageTk
from tkinter.font import Font




def get_file():
    global file
    file = tk.filedialog.askopenfilename()

def run_it():
    from pydfs_lineup_optimizer import Site, Sport, get_optimizer
    optimizer = get_optimizer(Site.FANDUEL, Sport.BASEBALL)
    optimizer.load_players_from_CSV(file)
    lineup_generator = optimizer.optimize(3)
    with open('Lineup.csv', "w") as csv_file:
        writer = csv.writer(csv_file, delimiter=' ')
        for lineup in lineup_generator:
            writer.writerow([lineup])

top = tk.Tk()
top.geometry("600x337")
if getattr(sys, 'frozen', False):
    baseDir = sys._MEIPASS
else:
    baseDir = os.path.abspath(os.path.dirname(__file__))

image = Image.open(os.path.join(baseDir, 'baseball.jpg'))

photo = ImageTk.PhotoImage(image)
L0 = Label(top, image=photo)

L2 = Button(top, text="UPLOAD", fg="blue", font=font2, command=get_file).grid(row=1, column=4)
L3 = Button(top, text="RUN", fg="blue", font=font2, command=run_it).grid(row=2, column=4)
top.mainloop()
python-3.x pyinstaller pulp
1个回答
2
投票

Pulp需要cbc.exe文件才能用于实际解决lp问题。

不幸的是,pyinstaller默认不会选择它,你需要找到一种方法来打包cbc.ex文件,然后告诉COIN_CMD()解算器在哪里找到它。

通过使用COIN_CMD(path=<your_path_here>)来做到这一点

© www.soinside.com 2019 - 2024. All rights reserved.