Ошибка нарушения доступа После Cx_Freeze / py2exe Qt5.5.1 Приложение

Я использовал QtDesigner для разработки GUI и использовать pyuic5 для генерации кода python. После замораживания его с cxfreeze или py2exe, приложение аварийно завершает работу на функции setupUI, которая генерируется pyuic5. При запуске приложения из кода оно работает так, как и должно. Я использую python 3.4 (в дистрибутиве Anaconda) и Qt 5.5.1

Первый фрагмент кода, который приложение разбивает (который находится на методе setupUI основного пользовательского интерфейса):

#Add a QWidget to QTabWidget
self.ModuleListingWidget.addTab(self.MarketingTab, "")

Когда я использую dependencywalker и попытаться профилировать результирующий exe он регистрирует следующие ошибки:

00:00:00.000: Started "distMAIN.EXE" (process 0x2938) at address 0x000C0000.  Cannot hook module.
00:00:00.000: Loaded "c:windowssystem32NTDLL.DLL" at address 0x772C0000.  Cannot hook module.
00:00:00.047: Loaded "c:windowssyswow64KERNEL32.DLL" at address 0x76CA0000.  Cannot hook module.
00:00:00.047: Loaded "c:windowssyswow64KERNELBASE.DLL" at address 0x74BF0000.  Cannot hook module.
...
00:00:00.125: First chance exception 0xC0000005 (Access Violation) occurred at address 0x721E5B10.
00:00:00.125: Second chance exception 0xC0000005 (Access Violation) occurred at address 0x721E5B10.

И py2exe и cxfreeze дают ту же ошибку, 0xC0000005 (нарушение доступа).

Как я могу исправить эту проблему или понять больше о самой проблеме?

Вот конфигурация cxfreeze:

import sys
from cx_Freeze import setup, Executable

base = "Win32GUI"
path_platforms = ( ".platformsqwindows.dll", "platformsqwindows.dll" )
build_options = {"packages": ['atexit'], "include_files" : [ path_platforms ]}

setup(
    name = "myapp",
    version = "0.1",
    description = "Sample cx_Freeze script",
    options = {"build_exe" : build_options},
    executables = [Executable("main.py", base = base)]
    )

и py2Exe config:

from distutils.core import setup
import py2exe
import sys
sys.argv.append('py2exe')
import glob
import src.MyProj
setup(console=['main.py'], options = {"py2exe": {"typelibs":
                          # typelib for WMI
                          [('{565783C6-CB41-11D1-8B02-00600806D9B6}', 0, 1, 2)],
                          # create a compressed zip archive
                          "compressed": True,
                            'bundle_files':   1,
                          "optimize": 2,

                          "includes":['sip', "PyQt5", 'PyQt5.QtCore', 'PyQt5.QtWidgets', 'PyQt5.QtGui',  'PyQt5.QtSql']}},

    # The lib directory contains everything except the executables and the python dll.
    # Can include a subdirectory name.
    zipfile = "./shared.zip",
      data_files=[
          ('Images', glob.glob('Images/*.*')),
            ('sqldrivers', ('C:/Users/user/src/dist/plugins/qsqlmysql.dll',)),

                ('/c/Python34/Lib/site-packages/PyQt5', ['C:/Python34/Lib/site-packages/PyQt5/Qt5Core.dll'])])

1 ответ

  1. Я не мог найти и решение для этого, вероятно, ошибка зависимости. Вместо этого я использовал pyinstaller, и это работает как шарм.