`
JhonStryker
  • 浏览: 19112 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

pyinstaller打包多个py脚本流程备忘

阅读更多
[size=large][size=medium][size=x-small]最近写了一个爬取html中图片,然后将图片下载到本地的脚本。想着做成exe,就在网上各种找工具。后来找了一个py2exe,优点是可配置的选项很丰富,import py2exe模块后,修改打包脚本就可以。然后在网上找了很多py2exe的资料,安装、配置、打包等,都成功了。但是有个小问题是,打包后的exe在运行时报错(EOFError:EOF when reading a line)。一开始还怀疑过是不是打包工具不能打包多个脚本文件,也不明白打包程序其实是通过分析脚本文件中的import语句来知道应该打包哪些模块的。最后,原因是我脚本中使用了raw_input()函数,但是打包后的程序并没有标准输出窗口,所以根本没有地方输出。其实如果把选项中的windows换成console可能会好,但是我没有试。因为在网上搜索找到了其它几种打包方式,cx_freeze和pyinstaller,在Q群里有一个朋友用的是cx_freeze,在网上查了一下资料,配置过程跟py2exe很像,而且这个朋友用cx_freeze帮我打包了程序之后,还是会出eoferror错误。所以就尝试了一下pyinstaller。一顿查资料,安装配置之后,使用如下命令打包:pyinstaller.py -D -n DownloadFavourite -c --upx-dir=C:\PyInstaller-2.1 --workpath=C:\Users\huzexian\Desktop\build --distpath=C:\Users\huzexian\Desktop\dist --specpath=C:\Users\huzexian\Desktop main.py

日志信息中有warning,我这种方式是按单文件夹模式打包的。然后我将打包中的exe取出来,放到了桌面,双击运行,闪退。我又在打包的文件夹中双击运行,正常。一开始不理解,以为是打包的问题。后来看了pyinstaller的manual,打包到单文件夹模式时,运行一定要在打包文件夹中运行,不然肯定找不到库。后来改成打包为单文件模式,拷贝到桌面,运行正常。

PS:如果以后用到了很多第三方库,在打包时可以加-p参数,然后指定pyinstaller查找所用到的库的路径,可能还需要安装</span><span style="">Microsoft Visual C++ 2008 Redistributable Package (x64)。

PS:打包是抽取现有系统上有的库文件,所以打包环境应该使用32位机器,且最好是win7,打包时的低版本可以保证打包后的exe文件被64位和win8系统向上兼容。

[/size][/size][/size]
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics