.py文件转exe文件

1.软件说明:

用python写一个视频处理软件,用到的库是moviepy

2.所用软件:

Python 3.6.5 32位

pycharm  专门的python编辑ide,推荐使用

pyinstaller

imageMagick.exe (记住他的安装路径,后面会用到)

注意事项:切记安装32位的python,因为32位python在64位系统上打包出来的exe文件可以在32和64位系统运行,反之不可以。我就是先装的64位,然后依赖都装完了才发现需要32位,又全部卸掉重新装,心好累

3.安装所需依赖:

安装moviepy:pip install moviepy

装了imagemagic后可能还是会报错,找不到那个错的截图了,执行下面的命令即可解决:pip install python-magic-bin==0.4.14

安装requests:pip install requests

安装eyed3:pip install eyed3(我是用到了这个依赖,不用的可以不装)

安装打包工具pyinstaller:pip install pyinstaller

打包命令: pyinstaller –F –p moviepy; demo1.py

参数说明:-F 打包成一个文件

-p 把moviepy文件夹打包进去

4.遇到的问题

4.1 windows下面python不能自动识别出imagemagick的安装目录,必须手动修改,

修改python  lib/site-packages/moviepy/config_defaults.py 到imagemagic的安装目录

IMAGEMAGICK_BINARY = r"C:\Program Files\ImageMagick-6.7.3-Q16\convert.exe"

4.2用pyinstaller打包后报错:moviepy.audio.fx.all has no attribute of audio_fadein

解决方案:将python/lib/sitepackages/moviepy文件夹拷贝到demo1.py所在的目录,修改moviepy/audio/fx/all 下的__init__.py文件

将exec这句注释掉,然后具体列出引入的包,因为pyinstaller不认exec这种方式,

改成如图1的方式,然后打包的时候加上-p moviepy;即可解决问题

图1

4.3报错:libmagic not found.明明安装了magic依赖,可是Pyinstaller打包的时候打不进去,必须在.py文件夹下放置C:\python32\Lib\site-packages\magic下的libmagic文件夹和magic.py文件,打包好的exe文件也要有这两个东西,即如图2所示。要修改magic.py的156行,bin_dist_path = os.path.join(os.path.dirname(__file__), 'libmagic')

修改为bin_dist_path = os.path.join(os.path.dirname(sys.executable), 'libmagic')

图2

这些全都搞定之后,打包的exe文件就可以在windows32位和64位系统上运行了

写在最后的话:笔者为了解决4.2的问题在网上整整找了3天,参考了https://github.com/Zulko/moviepy/issues/263pratikone的回答才解决,所以请珍惜劳动成果,转载请注明出处

python文件转exe的更多相关文章

  1. Python文件打包exe教程——Pyinstaller(亲测有效)

    今天将要解决一个问题,如何打包Pyhon文件 众所周知,Python文件的后缀名为“.py” 所以执行Python文件的要求之一便是具有python环境. 偶尔特殊情况,或者运行一些比较简单的工具,但 ...

  2. 关于python文件转为exe文件

    一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序. py2e ...

  3. 打包python文件为exe文件(PyInstaller工具使用方法)

    最近做的新浪微博爬虫程序,打算打包成.exe软件以方便使用,网上找到一个很好的打包工具pyinstaller,这里记录一下打包的方法. 一.下载pyinstaller 我使用的版本为PyInstall ...

  4. pyinstaller打包python文件成exe(原理.安装.问题)

    py文件打包成exe文件的方式一共有三种:py2exe.PyInstaller和cx_Freeze 本文分四个步骤来详讲如何用PyInstaller将py文件打包成exe文件 1. PyInstall ...

  5. 打包Python文件为exe

    pip install pyinstaller 然后就在终端里执行命令 cd 到目标文件的目录下 执行 pyinstaller  -F  ***.py 即可生成exe

  6. python文件导出exe可执行程序

    开门见山的说: 1.安装pyinstaller.(windows 用pip3 Mac 用pip)在cmd中输入:pip3 install pyinstaller 2.找到你要打包的文件的目录的上一个目 ...

  7. 用于Python文件转换.exe文件的pyinstaller工具安装

    安装方法: 注:python环境一定要配置好. 1.第一步:下载 官方网站:http://www.pyinstaller.org/downloads.html 此处下载版本为稳定版. 2.第二步:下载 ...

  8. 反编译python打包的exe文件

    目录 1.前言 2.使用环境 3.还原过程 4.号外 5.exe文件和所用到的反编译工具 6.参考 7.去签名(补漏) 前言 拿到了利用驱动人生进行传播的病毒样本,发现是python打包成的exe文件 ...

  9. python打包成exe文件

    在cmd命令提示符窗口中输入pip install pyinstaller(在python3的环境下,假如不能安装的话,用pip3 install pyinstaller指令) 使用指令pyinsta ...

随机推荐

  1. Web Uploader初始化隐藏容器失败及点击上传图片时反应较慢的问题

    问题1:在一个页面集成一个或者多个文件上传插件,初始化时有些DOM容器是隐藏的,这时候经常会出现初始化失败的情况,虽然按钮样式改变了,但是点击就是没反应(有时候不经意点了哪个地方,或许会出现文件选择框 ...

  2. MSIL实用指南-生成if...else...语句

    if...else...语句是非常重要的选择语句,它的生成一般需要ILGenerator的DefineLabel方法和MarkLabel方法,以及Brtrue_S和Br_S指令. 一.DefineLa ...

  3. Docker学习笔记 - Docker的仓库

  4. redis入门(01)redis的下载和安装

    参考链接: 命令手册 : http://www.redis.net.cn/order/ 菜鸟教程: http://www.runoob.com/redis/redis-install.html 一.概 ...

  5. jenkins创建multibranch pipeline

    参考以下文章进行实践: https://jenkins.io/doc/pipeline/tour/hello-world/#what-is-a-jenkins-pipeline (看见一个介绍的还不错 ...

  6. python 类的进阶

    类的进阶 一 isinstance(obj,cls)和issubclass(sub,super) class Foo: def __init__(self,name): self.name = nam ...

  7. QT 实现在QLabel上画图

    QT之所以不能再任意控件上绘图是因为QT的事件过滤器把控件的绘图事件给过滤了. 在paintevent()函数中,通常需要设置QPainter对象,创建QPainter对象的同时需要指定绘图设备,即继 ...

  8. Linux环境下用C语言实现socket 通信---简单代码

    Socket编程实例: 服务器端:一直监听本机的8000号端口,如果收到连接请求,将接收请求并接收客户端发来的消息,并向客户端返回消息. 客户端:client.c /* File Name: clie ...

  9. ASP.NET CORE系列【六】Entity Framework Core 之数据库迁移

    前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framework Core 发现园子里有些文章讲得不是那么细节,对于新手小白来说,可能会有点懵. 特意整理 ...

  10. 高并发下,log4j日志打印行数导致的内存溢出问题

    log4j日志打印时,如果将行数打印出来,在调用量极大的情况下,会出现内存溢出问题. log4j打印日志,打印行数时,行数是通过一个一个exception抛出,再极高调用量的情况下,内存会因为exce ...