pyinstaller打包有moveipy库的脚本一直报错怎么解决?

pyinstaller打包有moveipy库的脚本一直报错怎么解决?

引入代码如下

# coding=utf-8
#-*-coding:utf-8-*-
from tkinter import *
from tkinter import ttk
import random
import os
import tkinter.messagebox as messagebox
import time
from tkinter import filedialog
from moviepy.editor import VideoFileClip
import ctypes

使用的打包命令如下:


pyinstaller --hidden-import moviepy -w -i favicon.ico main.py

报错内容

img

更换成其他的命令也是如此。

  • 这篇博客: Pyinstaller打包,彻底解决图片、数据路径问题中的 解决更复杂的问题之路 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • pyinstaller有很多选项,我们在解决问题的时候可能会碰到更复杂的问题,我们3分钟讲不完。

    如果你希望我更深入讲解,可以转发,点赞,嘻嘻。如果阅读和评论多,我可以考虑后续再出一个Pyinstaller终结者深度文章。

    但是这里我就先指明几个方向,帮助你更有效的研究:

    • pyinstaller的官网上有很细致的讲解:https://pyinstaller.readthedocs.io/en/stable/spec-files.html。英语不好也可以用谷歌翻译。

    • pyinstaller打包的时候会首先生成一个spec文件,我们可以手工去修改这个文件,下次打包指定用这个文件。它的好处是:里面可以写更复杂的选项,也可以重录利用。

    在这里插入图片描述
    spec文件的内容例子:

    # -*- mode: python ; coding: utf-8 -*-
    
    
    block_cipher = None
    
    
    a = Analysis(['058.py'],
                 pathex=[],
                 binaries=[],
                 datas=[('058.txt', '.')],
                 hiddenimports=[],
                 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, 
              [],
              exclude_binaries=True,
              name='058',
              debug=False,
              bootloader_ignore_signals=False,
              strip=False,
              upx=True,
              console=True,
              disable_windowed_traceback=False,
              target_arch=None,
              codesign_identity=None,
              entitlements_file=None )
    coll = COLLECT(exe,
                   a.binaries,
                   a.zipfiles,
                   a.datas, 
                   strip=False,
                   upx=True,
                   upx_exclude=[],
                   name='058')
    

如果在使用 PyInstaller 打包包含 moviepy 库的脚本时出现错误,可以尝试以下解决方案:

确认库的安装:确保已经正确安装了 moviepy 库。可以使用 pip 命令来安装:pip install moviepy。如果已经安装过,可以尝试升级到最新版本:pip install --upgrade moviepy。

指定隐藏的导入模块:在打包命令中,可以使用 --hidden-import 参数来指定隐藏导入的模块。对于 moviepy 库,可以尝试使用 --hidden-import moviepy.editor。
pyinstaller --hidden-import moviepy.editor -w -i favicon.ico main.py

检查运行环境:确保在打包脚本时使用的 Python 环境与脚本开发时的环境一致。特别是要确保使用的 Python 版本和安装的第三方库版本一致。

更新 PyInstaller 版本:如果使用的是较旧版本的 PyInstaller,尝试升级到最新版本,以获得更好的兼容性和解决可能存在的问题。

检查错误日志:当打包过程出现错误时,可以查看 PyInstaller 生成的错误日志文件,其中可能会提供有关错误原因和解决方法的详细信息。日志文件通常位于打包输出目录下的 build 文件夹中。

如果以上方法仍然无法解决问题,建议参考 moviepy 库的官方文档或在相关的开发者社区中寻求进一步的帮助。