I'm trying to pack my app Python3, PyQt5 for Windows using cx_Freeze. I've installed Python 3.4.3, Python-win32, PyQT5, cxfreeze. Application itself, run in console, works fine.
I try to pack it with cx_freeze: python setup.py build_exe. It works on the same host. But when I move it to another clean installation WinXP it gives an error:
Traceback:
File "C:\Python34\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27 in <module>
File "pyftp1.py" in 7, in <module>
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", in 2237, in _find_and_load
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", in 2226, in _find_and_load_unlocked
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", in 1191, in _load_unlocked
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", in 1161, in _load_backward_compatible
File "ExtensionLoader_PyQt5_QtWidgets.py", line 22, in <module>
File "ExtensionLoader_PyQt5_QtWidgets.py", line 14, in __bootstrap__
ImportError: DLL load failed: Не найден указанный модуль.
English: "specified module was not found".
Here's my setup.py:
import sys
from cx_Freeze import setup, Executable
includes = ['sys', 'PyQt5', 'PyQt5.Core', 'PyQt5.QtGui', 'PyQt5.QtWidgets', 'os', 'os.path', 'ftplib',
'traceback', 'time',]
excludes = []
packages = ['os', 'PyQt5']
path = []
build_exe_options = {
'includes': includes,
'excludes': excludes,
'packages': packages,
'path' : path,
#'dll_includes': ['msvcr100.dll'],
'include_msvcr' : True,
'include_files': [
(r'C:\Windows\System32\msvcr100.dll', 'msvcr100.dll'),
],
}
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
setup(
name = "pyftp1",
version = "0.1",
description = "Foto uploader",
options = {'build_exe_options': build_exe_options},
executables = [Executable("pyftp1.py", base=base, appendScriptToLibrary=False, copyDependentFiles=True)]
)
Also I found it doesn't copy msvcr100.dll file, however I've stated it twice! I've copied it manually to target host.
Here's pyftp1.py:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys, time, os, hashlib
import ftplib
import traceback
from PyQt5.QtWidgets import QApplication, QWidget, QFileDialog # <-- Line 7
from PyQt5.QtWidgets import QPushButton, QHBoxLayout, QVBoxLayout, QScrollArea, QLineEdit, QCheckBox
from PyQt5 import QtGui
from PyQt5.QtGui import QIcon, QPalette, QLinearGradient, QColor, QBrush
from PyQt5.QtCore import QObject, QThread, pyqtSignal, pyqtSlot