整个周末都head不休,然后进一步研究SO之后,我设法使用UI文件按预期方式编译了独立的.exe。
首先,我用这个答案定义了以下函数
使用PyInstaller捆绑数据文件(–onefile)
# Define function to import external files when using PyInstaller.def resource_path(relative_path): """ Get absolute path to resource, works for dev and for PyInstaller """ try: # PyInstaller creates a temp folder and stores path in _MEIPASS base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path)
接下来,我使用此函数和所需类的变量导入了.UI文件。
# import .ui forms for the GUI using function resource_path()securitySearchForm = resource_path("securitySearchForm.ui")popboxForm = resource_path("popbox.ui")Ui_MainWindow, QtbaseClass = uic.loadUiType(securitySearchForm)Ui_PopBox, QtSubClass = uic.loadUiType(popboxForm)
然后,我不得不使用Qt
Designer创建资源文件(.qrc),并使用该资源文件嵌入图像/图标。完成后,我使用pyrcc4将.qrc文件转换为.py文件,该文件将在主脚本中导入。
终奌站
C:UsersgiranmPycharmProjectsPyQt Tutorial>pyrcc4 -py3 resources.qrc -o resources_rc.py
蟒蛇
import resources_rc
确认主要.py脚本正常工作后,我便使用PyInstaller创建了.spec文件。
终奌站
C:UsersgiranmPycharmProjectsPyQt Tutorial>pyi-makespec --noconsole --onefile secSearch_demo.py
根据PyInstaller的指南,我已经通过修改上述.spec文件添加了数据文件。
https://pythonhosted.org/PyInstaller/spec-files.html#adding-data-
files
最后,然后使用上方的.spec文件编译.exe。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)