pyqt5打包成exe踩坑了!!!

需求

需求是写一个视频编辑器,选择通过pyqt5进行相关组件的编辑,通过pyinstaller进行打包exe文件,一系列的流程不写,目前先对打包遇到的坑进行梳理,方法有多种,我只是选择了自己的那种,欢迎指点不足

放一下我的编辑器
美女镇楼
框框截图

AttributeError: module audio/video.fx.all has no attribute crop

这个百度解决方法很多,不想细说,直接贴代码

找到moviepy的路径Lib\site-packages\moviepy\audio\fx\all_init_.py进行修改

import pkgutil

import moviepy.audio.fx as fx

__all__ = [name for _, name, _ in pkgutil.iter_modules(
    fx.__path__) if name != "all"]

#for name in __all__:
    #print("from  moviepy.video.fx import %s" % (name))
    #exec("from ..%s import %s" % (name, name))
from moviepy.audio.fx import audio_fadein
from moviepy.audio.fx import audio_fadeout
from moviepy.audio.fx import audio_left_right
from moviepy.audio.fx import audio_loop
from moviepy.audio.fx import volumex
from moviepy.audio.fx import audio_normalize

Lib\site-packages\moviepy\video\fx\all_init_.py进行修改

"""
Loads all the fx !
Usage:
import moviepy.video.fx.all as vfx
clip = vfx.resize(some_clip, width=400)
clip = vfx.mirror_x(some_clip)
"""

import pkgutil

import moviepy.video.fx as fx

__all__ = [name for _, name, _ in pkgutil.iter_modules(
    fx.__path__) if name != "all"]

#for name in __all__:
    #print("from  moviepy.video.fx import %s" % (name))
    #exec("from ..%s import %s" % (name, name))
#    print("from  moviepy.video.fx import %s" % (name))

from  moviepy.video.fx import accel_decel
from  moviepy.video.fx import blackwhite
...
from  moviepy.video.fx import time_symmetrize

TypeError: ‘module’ object is not callable

这个问题是怎么来的呢?
贴上自己的代码

from moviepy.editor import VideoFileClip

fileClip = VideoFileClip(self.video_file)
video = fileClip.crop(x1=int(self.xywh[0]), y1=int(self.xywh[1]), width=int(self.xywh[2]), height=int(self.xywh[3]))  # 对视频播放区域进行剪辑

异常指出fileClip.crop不是一个方法而是一个模块
可以通过修改editor源码进行改正

原代码是这样的
for method in [
          "afx.audio_fadein",
          "afx.audio_fadeout",
          "afx.audio_normalize",
          ....
          "vfx.speedx"
          ]:

    exec("VideoClip.%s = %s" % (method.split('.')[1], method))
更改后的这样的
for method in [
          "afx.audio_fadein.audio_fadein",
          "afx.audio_fadeout.audio_fadeout",
          "afx.audio_normalize.audio_normalize",
          ...
          "vfx.speedx.speedx"
          ]:

    exec("VideoClip.%s = %s" % (method.split('.')[1], method))

不知道有没有更好的方法,求告知

not fund "**.qcc"文件

代码中读取了其他资源文件,但打包时没有引用进来
解决方法可以看这篇文章将资源文件一起打包

建议

1、打包最好用一个新的环境,virtualenv创建一个新的干净的环境,在里面随便更改源码都不会影响以后的日常使用
2、建议使用pyinstaller -D xxxx.py方式打包,等没有问题再 -F -w

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值