【发布时间】:2019-09-19 20:50:31
【问题描述】:
我通过 Anaconda 3 (Python 3.7) 和 Designer 使用 PyQt5 开发了一个“不那么简单”的 GUI。 我在我的程序中导入了 3 个不同的 .ui 文件。
当我运行 cx_Freeze 时,一切运行良好,我创建了 .exe。然后,我从 cx_Freeze 创建的“Build”文件夹中的“Python”文件夹中复制“platform”文件夹。
但是,当我将它传递给另一台没有任何东西的机器(没有 anaconda,没有 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)])
我读了很多关于它,但我觉得没有“奇迹”的解决方案......
你能帮我冻结我的应用程序并让它在“原始机器”上运行吗?
【问题讨论】:
标签: python-3.x dll pyqt5 cx-freeze