【发布时间】:2016-11-06 08:01:46
【问题描述】:
我有一个用 Python 编写的数据采集程序,我将它作为可执行文件分发给我的合作伙伴(使用 cx_freeze),因为我不想打扰他们安装 Python 和安装所有软件依赖项。该计划已经运行良好一年了。最近程序开始崩溃(crash,not give a scripting error,即Python虚拟机本身就崩溃了)。所以我想知道是什么库导致了这个问题。这个问题是随机发生的,因此很难系统地查明原因。
我了解了faulthandler,我想将它与我的 cx_freeze 一起使用,因为我不能确定问题是由于 cx_freeze 本身还是由于其他一些库而发生的。
问题:如何生成使用faulthandler 的 cx_freeze 可执行文件?
我尝试了什么:
我当前的 cx_freeze 设置脚本如下:
import sys
from cx_Freeze import setup, Executable
from GUI.Meta import *
target = Executable("Main.py",
#base = "Win32GUI",
icon = "GUI\\icon.ico",
compress=True,
targetName="Prog.exe")
setup(
name = "My Software",
version = SOFTWARE_VERSION,
description = "",
executables = [target])
我尝试用Main.py -q -X faulthandler 替换我的可执行部分Main.py,但这没有用。使用import faulthandler 或from faulthandler import * 在我的cx_freeze 设置文件中导入faulthandler 没有帮助。
请指教。
其他信息:我正在使用的依赖项(以防您可能知道问题的可能原因):PySide、Sympy、Numpy、H5py、PySerial、Matplotlib
【问题讨论】:
-
基础 = 无;如果 sys.platform == "win32":; base = "Win32GUI";来自:cx-freeze.readthedocs.io/en/latest/…,如果windows下cmd:base="console"(法文名)
-
@Destrif 对不起,faulthandler 将如何发挥作用?
-
@Destrif 不一定是导入问题。实际上导入似乎是错误的,因为
faulthandler通常在 Python 命令行上使用Python Main.py -q -X faulthandler调用。没有faulthandler,就没有任何问题。所以我的问题是关于如何在使用 cx_freeze 时获取程序的堆栈跟踪。 -
好吧,太完美了:python 版本/Os
-
@Destrif Python 3.4 32 位在 Windows 10 上。我在 Python 3.4 环境中使用 Anaconda。
标签: python python-3.4 stack-trace cx-freeze faulthandler