Python 使用Xlsxwriter和PyQt4时出现分段错误

Python 使用Xlsxwriter和PyQt4时出现分段错误,python,segmentation-fault,pyqt,pyqt4,xlsxwriter,Python,Segmentation Fault,Pyqt,Pyqt4,Xlsxwriter,在同一个脚本中使用Python模块Xlsxwriter和PyQt4时,我当前遇到了分段错误。在运行Xlsxwriter时只需导入PyQt4就会导致分段错误 import sys from PyQt4 import QtGui def WriteExcel(guitext,filename): import xlsxwriter workbook = xlsxwriter.Workbook(filename) worksheet = workbook.add_works

在同一个脚本中使用Python模块Xlsxwriter和PyQt4时,我当前遇到了分段错误。在运行Xlsxwriter时只需导入PyQt4就会导致分段错误

import sys 
from PyQt4 import QtGui

def WriteExcel(guitext,filename):
    import xlsxwriter
    workbook = xlsxwriter.Workbook(filename)
    worksheet = workbook.add_worksheet('Test Tab') 
    worksheet.write(0, 0, guitext) 
    workbook.close() 
    return


def main():
    WriteExcel('test text', 'test.xlsx')


if __name__ == '__main__':
    main()   
注释掉“from PyQt4 import QtGui”修复了这个问题,尽管我需要使用Gui获取要发送到Excel文件的信息。有什么解决方法吗?我用openpyxl而不是xlsxwriter尝试了类似的代码,但仍然出现了一个seg.fault

gdb的分段故障结果如下所示

<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from [path to]/anaconda/bin/python...done.
Starting program: [path to]/anaconda/bin/python qtgui-excel.py
[Thread debugging using libthread_db enabled]

Program received signal SIGSEGV, Segmentation fault.
0x00002aaab0541624 in fill_window () from [path to]/anaconda/lib/libz.so.1
根据Zipfile文档,此压缩使用libz模块

也许这与编写XML有关

可能不是。XlsxWriter使用自己的xml编写器


segfault似乎位于
libz
中,它是从XlsxWriter和OpenPyXL都使用的核心zipfile模块调用的。

是有意义的。是否有一种处理此类冲突的通用方法?可能最好尝试进一步隔离问题。尝试一个简单的zipfile编写示例,看看是否存在segfault。如果然后t将此作为问题报告给PyQT4开发人员。如果不是,则需要更深入地了解XlsxWriter/OpenPyXL使用的ZipFile模块的哪些功能导致了此问题。尽管第一步可能是在不使用PyQT4的情况下运行程序的XlsxWriter部分,并查看是否出现segfault。如果是这样,则不是一个错误PyQt4问题。谢谢你的提示。我已经缩小了破坏PyQt4的代码范围。
import sys
from PyQt4 import QtGui
def WriteZip():`import zipfile``zf=zipfile.zipfile('zipfile_write.zip',mode='w',compression=zipfile.zipèDEFLATED)`zf.write('README.txt')`zf.close()`return`
def main():
`WriteZip()`
如果uuu name uuu=='uuu main uu':
`main()`这在zf.write命令处中断。但只有当commpression设置为`compression=zip.zip\u DEFLATED`时,zipfile模块甚至说zip\u DEFLATED需要zlib。
zipfile.ZIP_DEFLATED