mxivideo/docs/QUICK_FIX_GUIDE.md

3.2 KiB
Raw Blame History

快速修复指南 - Python Core 构建问题

问题分析

构建失败的原因是 build.spec 文件中使用了 __file__ 变量但在PyInstaller的spec文件中这个变量不可用。

快速解决方案

方案1使用命令行直接构建推荐

python_core 目录下运行:

# Windows
python -m PyInstaller --onefile --console --name mixvideo-python-core main_simple.py

# 或者如果要包含完整功能
python -m PyInstaller --onefile --console --name mixvideo-python-core ^
  --hidden-import python_core ^
  --hidden-import python_core.utils ^
  --hidden-import python_core.services ^
  main.py

方案2使用测试批处理文件

直接运行:

cd python_core
build_test.bat

方案3修复spec文件

如果要使用spec文件请使用以下简化版本

# build_fixed.spec
# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(
    ['main.py'],
    pathex=['.'],
    binaries=[],
    datas=[],
    hiddenimports=[
        'python_core',
        'python_core.utils',
        'python_core.utils.logger',
        'python_core.utils.jsonrpc',
        'python_core.services',
        'python_core.services.template_manager',
        # 添加其他需要的模块
    ],
    hookspath=[],
    hooksconfig={},
    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='mixvideo-python-core',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

验证步骤

  1. 构建成功后,在 python_core/dist/ 目录下会生成 mixvideo-python-core.exe

  2. 测试可执行文件

    dist\mixvideo-python-core.exe --version
    dist\mixvideo-python-core.exe --module test --action hello
    
  3. 复制到Tauri目录

    mkdir ..\src-tauri\binaries
    copy dist\mixvideo-python-core.exe ..\src-tauri\binaries\
    
  4. 更新Tauri配置src-tauri/tauri.conf.json 中添加:

    {
      "bundle": {
        "externalBin": [
          {
            "name": "mixvideo-python-core",
            "src": "binaries/mixvideo-python-core",
            "targets": ["all"]
          }
        ]
      }
    }
    

如果仍然遇到问题

检查Python环境

python --version
python -m pip list | findstr pyinstaller

安装必要依赖

python -m pip install pyinstaller requests Pillow

使用最简单的构建

cd python_core
python -m PyInstaller --onefile main_simple.py

这将创建一个基本的可执行文件,可以用来测试整个流程。

下一步

一旦基本构建成功,就可以:

  1. 逐步添加更多的隐藏导入
  2. 测试完整的功能
  3. 集成到Tauri应用中

记住:先让简单版本工作,再逐步增加复杂性。