python - 将使用 ui 文件加载的 .py 转换为 exe 时出错
问题描述
我想将与 UI 文件一起加载的 .py 转换为 exe。
我已经按照PyInstaller + Ui Files和PyInstaller + UI Files - FileNotFoundError: [Errno 2] No such file or directory 中的步骤进行操作:
我在我的 .py 中添加了 resource_path 方法代码
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)
form = resource_path("qt_designer.ui")
Ui_MainWindow, QtBaseClass = uic.loadUiType(form)
我还对 MyApplication.spec 进行了更改,如下所示:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=['C:\\Users\\Alvin\\PycharmProjects\\untitled'],
binaries=[],
datas=[('C:\\Users\\Alvin\\PycharmProjects\\untitled\\qt_designer.ui',".")],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='MyApplication',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True )
但我收到此错误:
Traceback (most recent call last):
File "main.py", line 380, in <module>
File "main.py", line 36, in __init__
File "site-packages\PyQt5\uic\__init__.py", line 227, in loadUi
File "site-packages\PyQt5\uic\Loader\loader.py", line 72, in loadUi
File "site-packages\PyQt5\uic\uiparser.py", line 1013, in parse
File "xml\etree\ElementTree.py", line 1196, in parse
File "xml\etree\ElementTree.py", line 586, in parse
FileNotFoundError: [Errno 2] No such file or directory: 'qt_designer.ui'
[761476] Failed to execute script main
错误截图
谁能帮我指出我的错误或我错误地遵循的步骤?
解决方案
推荐阅读
- google-api - 是否可以通过 javascript 直接访问 adwords API?
- javascript - Grunt connect (grunt-contrib-connect) livereload:致命错误:端口 8000 已被另一个进程使用
- sql - MAX() 分别用于 2 个日期
- azure - 当我使用自定义策略时,如何在令牌中返回 Azure AD B2C 的内置声明?
- javascript - 意外的函数表达式。(首选箭头回调)
- node.js - 从 Mongoose 获取数据并放入数组
- angular - Angular如何获取错误链接的URL
- php - 无法使用 XPath 获得正确的值
- java - 带有注释的beanIO - 将对象列表写入json文件
- android - 主屏幕小部件中的计时器 - 错误的倒计时格式