Pyinstaller .exe 在 运行 期间崩溃,没有错误消息

Pyinstaller .exe crashing during run without error message

当 运行 一个可执行文件时,我的程序在处理大文件时崩溃。崩溃不会发生在小文件上,小文件可以毫无问题地得到处理。奇怪的是该程序在 pyinstaller 之外工作得很好。我已经尝试通过命令提示符和调试输出使用控制台进行构建,但仍然没有打印任何内容。

这里需要注意的重要一点是,可执行文件在其他 PC 上运行良好(具有相同的文件)。目前还不完全清楚这些 PC 之间的区别是什么。它可能是内存,但在崩溃期间,程序使用的内存并不多。它可能是引擎盖下的依赖项,但我认为 pyinstaller 会处理这些。

程序崩溃的行是 read_csv 调用。

df = pd.read_csv(filename, sep=',', low_memory=False)

在这里,low_memory 并不重要,无论哪种方式都会发生崩溃。分隔符也没有任何错误,因为这会打印错误并且在 pyinstaller 之外工作正常。

我在某处读到可能仍然缺少一些 dll,这些会出错吗?因为我已经通过将它们包含在我创建 .exe 的 .spec 文件中修复了其中的一些问题。

这不是重复问题,因为 this question 特定于 pygame。 Interesting question 没有解决我的问题。

问题出在内存上。通过分块读取文件修复了这一行。

chunksize = 10000
chunk_red = pd.read_csv(self.red_path, sep=',', chunksize=chunksize,
   names=colnames, header=None)
red_df = pd.concat(chunk_red, ignore_index=True)

我现在在另一行遇到了同样的问题,我尝试使用 KD 树将点与最近的邻居匹配,但是这会使用更多的内存并且不能真正分块。