Я разработал «не очень простой» графический интерфейс с PyQt5 через Anaconda 3 (Python 3.7) и Designer.У меня есть 3 разных файла .ui, которые я импортирую в свою программу.
Когда я запускаю cx_Freeze, все работает хорошо, я создаю .exe.Затем я копирую папку «platform» из папки «Python» в папке «Build», которую создает cx_Freeze.
НО, когда я передаю ее на другую машину без чего-либо (без анаконды, нетPython, нет cx_Freeze, ничего), приложение не запускается.Я получаю:
ImportError: DLL load failed: The specified module could not be found
Это происходит в 10-й строке моего кода:
from PyQt5 import QtGui, QtWidgets
Импорт в мой код:
from PyQt5 import QtGui, QtWidgets
import sys
import glob
import datetime
from matplotlib.backends.qt_compat import QtCore, QtWidgets
from matplotlib.backends.backend_qt5agg import FigureCanvas
from matplotlib.figure import Figure
import numpy as np
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import design
import flex
import entry
design
, flex
и entry
- это файлы .ui.Все они содержат эту часть в конце (не знаю, поможет ли это):
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
И, наконец, установочный файл, который я запускаю с помощью cx_Freeze:
import sys
from cx_Freeze import setup, Executable
import matplotlib
import numpy
# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": ["os", "matplotlib"], "includes": ["PyQt5", "atexit"], "excludes": ["tkinter"]}
# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup( name = "Flexicounts",
version = "0.1",
description = "Flexicounts pour faire tes comptes facilement",
options = {"build_exe": build_exe_options},
executables = [Executable("flexicounts.py", base=base)])
Я прочиталмного об этом, но я чувствую, что нет никакого «чудесного» решения ...
Не могли бы вы помочь мне заморозить мое приложение и заставить его работать на "девственной машине"?