缺少 numpy.random.common

我使用python的tkinter编写了一个程序,用pyinstaller编译之后,程序提示
failed to execute script 文件名
错误提示:
no module named 'numpy.random.common'
可是我重新pip numpy模块还是不好用 请问怎么解决?

#!/usr/bin/python 
# -- coding: utf-8 --
import fnmatch  #选择文件的关键词
import os
from time import sleep
from tkinter import *
import tkinter.filedialog #弹出选择路径的库
import tkinter.messagebox
import fnmatch  #选择文件的关键词
import re
import pandas as pd
import docx
import pickle
import  codecs
import string
import shutil
from win32com import client as wc



def matchdocname(str1,root,i,list_box):
    if str1 in os.path.splitext(i)[0]:
        list_box.insert(END, root+"/"+i)
def matchdoccontent(str1,root,i,list_box):   
    if i.endswith('txt'):                                               #当文件为txt时
        with open(os.path.join(root, i) ,'r') as fp:
            errors=''
            aa=fp.read()
            if str1 in aa :
                list_box.insert(END, root+"/"+i)  
    if i.endswith('xls') or i.endswith('xlsx') :                        #当文件为excel时
        df=pd.read_excel(os.path.join(root, i))
        df=df.values
        for k in df:
            for j in k:
                j=str(j)
                if  str1 in j:
                    list_box.insert(END, root+"/"+i)
    if i.endswith('docx'):                                               #当文件为.docx时
        word = wc.Dispatch('Word.Application')
        doc = word.Documents.Open(os.path.join(root, i))      
        newname=os.path.join(root, i)+"(translate txt)" 
        doc.SaveAs(newname,4)   
        doc.Close()
        word.Quit()
        with open(newname ,'r') as fp:
            errors=''
            aa=fp.read()
            if str1 in aa :
                list_box.insert(END, root+"/"+i)
        os.remove(newname)                                  
    if i.endswith('doc'):                                               #当文件为.doc时  
        word = wc.Dispatch('Word.Application')
        doc = word.Documents.Open(os.path.join(root, i))      
        newname=os.path.join(root, i)+"(translate txt)" 
        doc.SaveAs(newname,4)   
        doc.Close()
        word.Quit()
        with open(newname ,'r') as fp:
            errors=''
            aa=fp.read()
            if str1 in aa :
                list_box.insert(END, root+"/"+i)
        os.remove(newname)                                           #删掉这个临时文件

def left():  
    if not entry.get()  :#检测关键词输入框是否为空
        tkinter.messagebox.showerror("提示信息:","出现以下错误:\n关键词不能为空")#弹出警告框
        return #如果为空不再执行
    if var1.get()==0 and var2.get()==0  :
        tkinter.messagebox.showerror("提示信息:","出现以下错误:\n匹配项不能为空")#弹出警告框
        return #如果为空不再执行
    list_box.delete(0,END)
    path = tkinter.filedialog.askdirectory()#弹出选择路径的窗口,path为获取的路径
    path_list = os.walk(path)#获取一个列表目录的对象
    for root, dirs, files in path_list:
        #print root, dirs, files
        if var1.get()==1 and  var2.get()==0:              #当只匹配文件名时
            list_box.insert(END, '文件名')  
            for i in files:
                matchdocname(entry.get(),root,i,list_box)
        elif var1.get()==0 and var2.get()==1:            #当只匹配文件内容时
            list_box.insert(END, '文件内容')
            for i in files:
                matchdoccontent(entry.get(),root,i,list_box)
        elif var1.get()==1 and  var2.get()==1:            #当既匹配文件名又匹配文件内容时 
            list_box.insert(END, '文件名')  
            for i in files:  
                matchdocname(entry.get(),root,i,list_box)
            list_box.insert(END, '--------------')
            list_box.insert(END, '文件内容')
            for i in files:
                matchdoccontent(entry.get(),root,i,list_box)

def func2(e):
     if not list_box.curselection():#取双击的坐标52
         return
     path = list_box.get(list_box.curselection(),last=None)
     os.startfile(path)



def nagea(e):
    error = ''
    tdir = dirs.get(dirs.curselection())
    if os.path.isfile(tdir):        #如果是文件 则打开
        os.startfile(tdir)
    elif os.path.isdir(tdir):       #如果是文件夹 则调用dols
        setDirAndGo()

def wenjianshu():
    dirs.delete(0,END)
    path = tkinter.filedialog.askdirectory()#弹出选择路径的窗口,path为获取的路径
    doLS1(path)

#双击时调用,双击时,设置背景色为红色,并调用doLS函数打开所选文件
def setDirAndGo(ev=None):
    last = cwd.get()
    dirs.config(selectbackground='red')
    check = dirs.get(dirs.curselection())
    if not check:
        check = os.curdir
    cwd.set(check)
    doLS()

#实现更新目录的核心函数
def doLS(ev=None):
    error = ''
    tdir = cwd.get()
    if not tdir:tdir=os.curdir
        #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息
    if not os.path.exists(tdir):
        error = os.getcwd()+'\\'+tdir + ':未找到文件'
    elif not os.path.isdir(tdir):
        error = os.getcwd()+'\\'+tdir + ':未找到目录'
    if error:
        cwd.set(error)
        top2.update()
        sleep(1)
        cwd.set(os.curdir)
        dirs.config(selectbackground='LightSkyBlue')

        top2.update()
        return

    cwd.set(os.getcwd()+'\\'+tdir)
    top2.update()
    dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
    dirlist.sort()
    os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。

        #更新界面上方标签内容
    dirl.config(text=os.getcwd())
    top2.update()

    dirs.delete(0,END)
    dirs.insert(END,os.pardir)#os.chdir(os.pardir)  切换到上级目录 即将上级目录.. 插入到dirs对象中

        #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中
    for eachFile in dirlist:
        dirs.insert(END,eachFile)
        cwd.set(os.curdir)
        dirs.config(selectbackground='LightSkyBlue') 

def doLS1(tdir):
    error = ''
    if not tdir:tdir=os.curdir
        #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息
    if not os.path.exists(tdir):
        error = os.getcwd()+'\\'+tdir + ':未找到文件'
    elif not os.path.isdir(tdir):
        error = os.getcwd()+'\\'+tdir + ':未找到目录'
    if error:
        cwd.set(error)
        top2.update()
        sleep(1)
        cwd.set(os.curdir)
        dirs.config(selectbackground='LightSkyBlue')
        top2.update()
        return

    cwd.set(os.getcwd()+'\\'+tdir)
    top2.update()
    dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
    dirlist.sort
    os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。

    #更新界面上方标签内容
    dirl.config(text=os.getcwd())
    top2.update()

    dirs.delete(0,END)
    dirs.insert(END,os.pardir)#os.chdir(os.pardir)  切换到上级目录 即将上级目录.. 插入到dirs对象中

        #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中
    for eachFile in dirlist:
        dirs.insert(END,eachFile)
        cwd.set(os.curdir)
        dirs.config(selectbackground='LightSkyBlue') 


top2 = Tk()
top2.title('营销集约管控中心-文件管理')
top2.geometry('+50+50')#窗口大小,窗口位置
cwd = StringVar(top2)
var=IntVar()
dirl = Label(top2,fg = 'BLUE',font = ('Helvetica',18,'bold'))
dirl.pack()
dirfm = Frame(top2)

dirs = Listbox(dirfm,height=25,width=90)
#通过使用List的bind()方法,将鼠标双击事件绑定,并调用setDirAndGo函数
dirs.bind('<Double-1>',nagea)

dirs.pack(side=LEFT,fill=BOTH)

list_box = Listbox(dirfm,height=25,width=90)
list_box.bind('<Double-Button-1>',func2) #绑定一个双击触发事件
list_box.pack(side=LEFT,fill=BOTH)#显示列表框

dirfm.pack()

#第二个框架bfm,放置按钮
bfm = Frame(top2)
open1 = Button(bfm,text='文件树',command=wenjianshu,activeforeground='white',activebackground='blue')
open1.pack(side=LEFT)
bfm.pack(side=LEFT,fill=BOTH)
#多选框插件
var1 = tkinter.IntVar()  # 用来储存下面勾选项1中返回的0或1
var2 = tkinter.IntVar()  # 用来储存下面勾选项2中返回的0或1

button2=tkinter.Checkbutton(top2,text="匹配文件内容",variable=var2,onvalue=1,offvalue=0)
button2.pack(side=RIGHT,fill=BOTH)
button1=tkinter.Checkbutton(top2,text="匹配文件名",variable=var1,onvalue=1,offvalue=0)
button1.pack(side=RIGHT,fill=BOTH)
#按钮控件
entry = Entry()#输入框实例化
entry.pack(side=RIGHT,fill=BOTH)#输入框
button2=Button(top2,text="关键字",command=left)
button2.pack(side=RIGHT,fill=BOTH)


if __name__ =='__main__':
    #设定初始目录为桌面
    mainloop()

2个回答

我刚好也遇到这个问题,我是通过重新安装numpy 1.16.2 版本解决的

pip uninstall numpy
pip install numpy==1.16.2

希望可以帮到你,我猜测是因为numpy版本的原因

谢谢,果真是版本问题

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问