Отсутствие необходимых зависимостей Numpy при использовании Pyinstaller - PullRequest
0 голосов
/ 26 января 2019

Я создал мини-приложение, которое используется для объединения нескольких файлов 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 голосов
/ 29 января 2019

Если кто-то сталкивается с этим, похоже, это связано с версией Numpy, которая вызывает ошибки в Pyinstaller. Взгляните на ссылку ниже.

[ Как исправить 'Отсутствие необходимых зависимостей [' numpy ']' при запуске упакованного приложения, созданного с помощью PyInstaller?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...