首页 > 解决方案 > Python日期比较在.exe应用程序中不起作用

问题描述

我创建了一个 python 脚本,在 Spyder 中运行它时运行良好。然后我用 pyinstaller 冻结它。当我运行 .exe 应用程序时,我收到以下错误。

在此处输入图像描述

以下是相关代码:

import pandas as pd
import os
from datetime import datetime, time
import teradata as td
import numpy as np
import smtplib
import xlrd #needed for .exe

### Import Fleet Plan file ###
path = '\\\PHX43XCIFSC0001\Planning'
folder = '\Aircraft Availability'
file = '\\NP Fleet Plan.xlsx'
sheet = 'Mainline'
colnames = [0,2]
link = path + folder + file
update = pd.Timestamp.date(pd.Timestamp(datetime.fromtimestamp(
        os.path.getmtime(link)), unit='s'))
mydata = pd.read_excel(link, sheet_name = sheet, header=colnames, index=None)
df = mydata

# Flatten multiindex to single columns
df.columns = (['{}:{}'.format(i[0], i[1]) for i in df])
df = df.reset_index()
df = df.rename(columns={'index':'mDate', df.columns[1]:'DOW'})

# Remove blank columns and Fleet level columns
xcolunassigned = [col for col in df.columns if 'Unnamed'  in col]
df = df.drop(xcolunassigned, axis=1)
xcolfleet = [col for col in df.columns if 'FLEET'  in col]
df = df.drop(xcolfleet, axis=1)

# Transpose data in to vectors
dft = pd.melt(df, id_vars=['mDate', 'DOW'], var_name='Status', value_name='mCount')

# Split Subfleets, join Legacy, remove 0 and NaN
dft[['Status', 'SubFleet']] = dft.Status.str.split(':',expand=True)
sDate = min(dft.mDate)
dft = dft.dropna()
dft = dft.reset_index(drop=True)
dft = dft[dft['mCount'] != 0]
dft = dft.reset_index(drop=True)

# Delete all data prior to today
dft = dft[dft['mDate'] >= datetime.combine(datetime.today(), time.min) ]
dft = dft.reset_index(drop=True)

我想知道是否需要像 xlrd 库那样显式导入依赖项。

感谢您的帮助。

标签: pandasnumpypyinstallerpython-3.7

解决方案


最终出现了 .exe 没有为我需要的库加载一些依赖项的问题。在我的代码中显式调用依赖项后,.exe 应用程序运行良好。


推荐阅读