首页 > 解决方案 > 将使用 ui 文件加载的 .py 转换为 exe 时出错

问题描述

我想将与 UI 文件一起加载的 .py 转换为 exe。

我已经按照PyInstaller + Ui FilesPyInstaller + 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

错误截图

谁能帮我指出我的错误或我错误地遵循的步骤?

标签: pythonpython-3.xpyqt5pyinstaller

解决方案


推荐阅读