使用Pyinstaller时缺少必需的依赖项Numpy

时间:2019-01-26 00:30:57

标签: python pandas numpy pyinstaller

我创建了一个微型应用程序,用于组合许多excel文件,但是由于此错误,我无法执行exe。我感到奇怪的是,我甚至没有在脚本中使用Numpy。我已经安装并重新安装了numpy,但这并不能解决问题。

我创建了一个虚拟环境,其中安装了以下库。

enter image description here

执行exe时出错 enter image description here

这是我的代码:

import tkinter as tk
from tkinter.simpledialog import askstring, askinteger
from tkinter.messagebox import showerror
from tkinter import messagebox
from tkinter import filedialog
from tkinter import ttk
import os
from os import path
import pandas as pd
import fnmatch
import glob
import datetime
from datetime import datetime
import time
import calendar

class Splash(tk.Toplevel):
    def __init__(self, parent, width=0.8, height=0.6, useFactor=True):
        tk.Toplevel.__init__(self, parent)
        self.title("Splash")
        w = 300
        h = 200
        x = 50
        y = 100
        self.geometry('%dx%d+%d+%d' % (w, h, x, y))
        lbl = tk.Label(self,text="Combine Excel\n Version 1.0", bg = 'lightgrey' )
        lbl.place(x=25, y=30)
        self.master.overrideredirect(True)
        self.lift()
        ## required to make window show before the program gets to the mainloop
        self.update()

class App(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.withdraw()
        splash = Splash(self)
        ## simulate a delay while loading
        time.sleep(1)
        ## finished loading so destroy splash
        splash.destroy()

def getfiles():
    listbox.delete(0,tk.END)
    beginput = entry_1.get()
    endinput = entry_2.get()
    timefmt = "%m/%d/%y"
    start = calendar.timegm(datetime.strptime(beginput, timefmt).timetuple())
    end = calendar.timegm(datetime.strptime(endinput, timefmt).timetuple())
    year = datetime.strptime(beginput, timefmt).strftime('%Y')
    monthyr = datetime.strptime(beginput, timefmt).strftime('%m-%y') +  ' Daily Collection'
    yearmm = 'CA_LoanLvl_' + time.strftime("%Y%m%d")
    yrnmsum = 'CA_Sum_' + time.strftime("%Y%m%d")

    frame = pd.DataFrame()
    list_ = []

    cols = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37,39,40,41,43,44,45,46,47,49,50,51,52,53,54,55,56,57]
    path1 = path.join(r'\\corp.int\cms\DeptData\Monthly Reporting'
                     '\Daily Collection',year,monthyr,'Data')

    pathexpt = path.join(r'\\corp.int\cms\DeptData\XX\DS\DataDownloads\Combine',yearmm)
    pathexptsum = path.join(r'\\corp.int\cms\DeptData\XX\DS\DataDownloads\Combine',yrnmsum)

    mypath = path1
    def test(f):
        if (not os.path.isfile(f)):
            return 0
        (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(f)

        return start<=ctime and end>=ctime

    files = [f for f in glob.glob(os.path.join(mypath, "adv*")) if test(f)]
    for item in files:
        listbox.insert(tk.END, os.path.basename(item))    



if __name__ == "__main__":
    App()

# Create the main window

root = tk.Tk()
s = ttk.Style(root)
s.theme_use('clam')

root.title("Combine GNMA Files")

# set the root window's height, width and x,y position
# x and y are the coordinates of the upper left corner
w = 600
h = 400
x = 50
y = 100
# use width x height + x_offset + y_offset (no spaces!)
root.geometry("%dx%d+%d+%d" % (w, h, x, y))
# use a colorful frame
frame = tk.Frame(root, bg='darkblue')
frame.pack(fill='both', expand='yes')
label = tk.Label(frame, text="Start Date-mm/dd/yy", bg = 'lightblue')
label.place(x=20, y=30)
label2 = tk.Label(frame, text="End Date-mm/dd/yy", bg = 'lightblue')
label2.place(x=20, y=100)


entry_1 = tk.Entry(root)
entry_1.place(x=20,y=60)
entry_2 = tk.Entry(root)
entry_2.place(x=20,y=130)


btn_1 = tk.Button(root,text="Get Files", bg='light grey', command = getfiles)
btn_1.place(x=400, y=15)


listbox = tk.Listbox(root)
listbox.place(x=20, y=160, width = 400)


def on_closing():
    if messagebox.askokcancel("Quit", "Do you want to quit?"):
        root.destroy()

root.protocol("WM_DELETE_WINDOW", on_closing)


root.mainloop()

1 个答案:

答案 0 :(得分:0)

如果有人遇到此问题,似乎与导致Pyinstaller错误的Numpy版本有关。看看下面的链接。

[How to fix 'Missing required dependencies ['numpy']' when running packaged app made with PyInstaller?