如何修复使用pyins打包python文件后与NUMPY包相关的错误

2024-04-25 07:37:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个代码,将xlsx转换为csv,然后将内容作为CICS活动的一部分写入CSD文件。你知道吗

当我在pycharm中执行代码时,它工作正常。我使用pyinstaller的--oneFile选项打包了python文件,在执行.exe文件时发现了一个错误。错误是:

ImportError:缺少必需的依赖项['numpy']

我试过在pycharm中运行相同的代码,效果很好。但我需要把它作为exe文件发送给我们的一个客户

import csv
import sys
import os
import pandas as pd




def xls2csv (xls_filename, csv_filename):
    global  excelFile
    df = pd.read_excel(xls_filename)  # sheetname is optional
    df.to_csv(csv_filename, index=False)
    excelFile = 1


def detectDelimiter(csvFile):
    with open(csvFile, 'r') as myCsvfile:
        header=myCsvfile.readline()
        if header.find(";")!=-1:
            return ";"
        if header.find(",")!=-1:
            return ","
    #default delimiter (MS Office export)
    return ";"


def ReadFile(csvFileName):
    global mydict
    with open(csvFileName, mode='r') as infile:
        reader = csv.reader(infile, delimiter=detectDelimiter(csvFileName))
        mydict = {'DEFINE TRANSACTION(' + rows[0] + ') ' : 'PROGRAM(' + rows[1] + ')' for rows in reader}
    #print(mydict)

def usage():
    print(" Error in execution \n usage : cstvToCSD <PathOfinputCSV/XLS/XLSXFile>  <PathOfOutputCSDFile>")


def WriteToCSDFile():
    progress = "Writing to CSD ...."
    with open(outFile, 'w') as f:
        print(progress)
        f.writelines('{}{}\n'.format(k, v) for k, v in mydict.items())
        print("Finished writing CSD file ")


if __name__ == "__main__":
 arguments = sys.argv[1:]
 count = len(arguments)
 excelFile=0
 if count == 2:
    fileName = arguments.__getitem__(0)
    outFile =  arguments.__getitem__(1)
    if os.path.isfile(fileName) :
        if  str(fileName).endswith("xlsx") or str(fileName).endswith("xls"):
            #print(" XLS FILE PATH  = ",fileName)
            csvFileName = str(fileName).replace(".xlsx",".csv").replace(".xls",".csv")
            if os.path.exists(csvFileName):
                os.remove(csvFileName)
            if os.path.exists(outFile):
                os.remove(outFile)
            #print(" CSV FILE PATH  = ", csvFileName)
            xls2csv(fileName,csvFileName)
        else:
            csvFileName = fileName

        ReadFile(csvFileName)
        WriteToCSDFile()
        if excelFile == 1:
            #print("Ï AM HERE" )
            os.remove(csvFileName)
    else:
        print("CSV/XLS/XLSX File doesnot exist or is not a file ")
        usage()
 else:
     usage()

Tags: 文件csvimportifosdefasusage