语音识别学习记录

1.使用pyinstaller可以方便的实现Py文件转exe文件,这里是它的manual: http://www.pythonhosted.org/PyInstaller/

 

2.使用命令行:

1)首先cmd进入要转换的py文件所在目录

2)执行命令:pyinstaller myscript.py  即可

3)可能你的工程包含多个py文件,只要在命令中指明入口所在的py文件就行

4)默认的执行,像2)中的命令,采用One Folder模式,打包后所有的文件都放到一个文件夹中

5)可以通过“-F”选项实现打包到一个大exe文件,即One File模式:pyinstaller -F myscript.py

6)如果是带GUI的窗口程序,可以带“-w”选项,将默认带的stdout控制台去掉了:pyinstaller -F -w myscript.py

 

3.调试:

1)命令行执行时增加“-d”选项,可在允许exe文件时,看到Pyinstaller架构运行的相关信息,对调试很有用

2)如果带了“-w”选项,调试信息以对话框形式出现,启动exe时,不断弹出对话框显示调试信息

3)如果没有“-w”选项,则通过stdout输出调试信息,这时需要在cmd中启动exe文件

4)调试时一般采用One Folder模式

5)即便是有窗口的应用(如利用了wxPython等GUI)一般先在调试模式下,通过stdout调试生成的exe文件,没有问题再生成正式发布exe;

6)调试:pyinstaller -d myscript.py

7)发布:pyinstaller -F -w myscript.py

 

4.调试常见问题:

1)在-w模式下,得到了对话框输出:pyi_rth_pkgres returned -1;不知道为什么,搜索也未果;重新打包加-d,去掉-w,控制台中启动生成的exe,得到调试信息:ImportError: The 'packaging' package is required; normally this is bundled with this package so if you get this warning, consult the packager of your distribution.
pyi_rth_pkgres returned -1

2)搜索得到答案:http://blog.csdn.net/kongxx/article/details/51037331

开发环境

python3.6.4

pyinstaller

tensorflow

 PyAudio-0.2.11

 

需求分析:

python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速。

当然打包的脚本似乎不是在所有的win平台下都能使用,win7有一部分不能使用,我在win10能够很好的运行。

准备:  

pyinstaller(http://www.pyinstaller.org/) 首先还是去官网看支持的python版本,不然会很尴尬的

#安装方法1:
#安装pyinstaller和pywin32
#使用一下命令将自动安装两个包,在cmd用pip命令

#pip install -i https://pypi.douban.com/simple/ pyinstaller(豆瓣源)

安装方法二:

pip install pyinstaller   (会自动下载future,pywin32,pyinstaller)

如何使用Pyinstaller

方法一:
1.cmd到/python/scripts 找到pyinstaller.exe
2.输入命令

1

pyinstaller.exe -F path:demo.py

方法二:
1.进入pyinstaller的解压包,输入命令
2."python pyinstaller.py -F path:demo.py"
从cmd最后一行输出可查找到生成的文件

12468 INFO: Appending archive to EXE D:\Documents\Downloads\PyInstaller-3.2\down
load\dist\download.exe

 

后记:

1.程序设置自定义图标:pyinstaller -F -i ico_path  py_path 

首先需要下载一张正常的ico,不能用直接修改后缀的。

下载图片:    https://www.easyicon.net

图片改为ico:  http://www.ico.la/

输入命令 pyinstaller -F -i "demo.ico" "main.py"

2.报错提示:

pyinstaller -F -i "demo.ico" "main.py" 命令格式一定是先图标路径,再程序路径。

路径最好为英文,没有中文字符;脚本名称里没有特殊字符如 .

使用utf8编码

图标文件必须是正常格式,不能直接更改后缀。

tuble index out of range ---》pyinstaller版本尚未支持python的版本

3.窗口程序

使用 pyinstaller -F -w  -i ico_path  py_path ,这样脚本不会弹出命令窗,前提是用了GUI库. 

4.导入模块问题

pyinstaller -F -w  -i  --hidden-import queue ico_path  py_path 加上选项

    使用pyinstaller可以把python程序打包成exe可执行文件,这样就能在其他人的电脑上运行你的程序了。这是我首次使用遇到的坑和一些经验总结。

1、pyinstaller打包exe文件时,递归太深:RecursionError: maximum recursion depth exceeded。

解决方法:

第一步:使用pyi-makespec [option] name.py,生成name.spec文件。(这里,我的name.py是control_gui.spec)

             可以参考官方文档:点击打开链接

第二步:将以下代码添加到上面生成的spec文件中。

 
  1. import sys

  2. sys.setrecursionlimit(5000)#5000这个数字可以随便设

第三步:使用pyinstaller [option] name.spec进行打包。

2、打包成exe文件后,点击exe文件,提示:Failed to execute [程序名]。

    这个问题用了比较久的时间去解决,我这里出错的主要原因是使用了tensorflow,然后对应的pandas版本不正确,才导致了错误,下面我会详细说明一下。

    首先,分析错误的步骤。建议一开始先使用-D命令对程序进行打包,这样在生成的build文件夹中也会有一个exe文件,点击这个exe文件可以调出控制台,上面会给出错误信息,控制台给出错误信息的时间特别短,所以有必要进行录屏,然后仔细观察错误,以下给出我的程序中出现的错误。

    很明显,上面给出错误是:type object 'pandas._libs.tslibs.conversion._TSObject'has no attribute '_reduce_cython__'。

    其中,以下两个作者给出了解决方案,我是按照第二个作者的博客修改成功的,因为我的Python版本是3.6。第三个文章是github上针对这一问题的讨论,有兴趣的也可以参与一下。

    第一个成功解决打包时不能import自定义的包或库出现运行exe时No module named 缺少包

    第二个成功解决pyinstaller打包AttributeError:type object pandas._TSObject has no attribute _reduce_cython_

    第三个no attribute __reduce_cython__

    具体说一下我的问题所在。我用的python版本是3.X是一个原因,其中一个重要的原因是我的Pandas版本是0.23.0,应该把安装0.20.0版本。因此,我把pandas版本使用pip install pandas==0.20.0安装之后,问题就解决了!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值