使用PyInstaller将Python程序文件转换为可执行程序文件


Posted in Python onJuly 08, 2016

Windows下采用PyInstall将py文件转换成exe可执行文件
好不容易写完的py文件,想做成exe文件,最开始选择用py2exe,结果生成的exe遇到两个问题,
1. py程序里print 的信息,cmd中执行tool后并没有显示在屏幕上;
2. 调用dll接口,执行py文件时是阻塞等待的,结果cmd中执行exe时,tool很快先返回了,接口还在运行,很诡异
一时找不到解决的办法,无奈弃用了,在网上找了pyinstall,试了一下,感觉功能更强大些。。。
安装PyInstaller之前需确认首先安装了pywin32
下载地址:http://nchc.dl.sourceforge.net/project/pywin32/pywin32/Build%20218/pywin32-218.win32-py2.7.exe
 
一、PyInstaller安装
1.下载地址:http://www.pyinstaller.org/wiki
2.最新版本:PyInstaller 2.0
3.直接“解压缩”之后即可使用,解压到您想让他在的路径即可
 
二、PyInstaller配置
1.事先写好py程序
2.在命令行执行:

Python Makespec.py --console --onefile NotePad\notepad.py

报错:

Configfile is missing or unreadable. Please run Configure.py before building

3.在命令行执行:

Configure.py

报错:

Python 2.6+ on Windows support needs pywin32,Please install http://sourceforge.net/projects/pywin32/

4.安装最新版本的 pywin32-217.win32-py2.7.exe,下载地址:http://sourceforge.net/projects/pywin32/files/pywin32/Build%20217/
 
三、PyInstaller使用
PyInstaller的使用相对简单,cmd下进入解压出来的目录,执行如下命令:
python pyinstaller.py [opts] yourprogram.py

四、主要选项包括:
-F, -onefile 打包成一个exe文件
-D, -onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c, -console, -nowindowed 使用控制台,无界面(默认)
-w, -windowed, -noconsole 使用窗口,无控制台

五、注意事项
在转换之前要确保py程序可以正常通过;
如果转换过程中出现什么错误,用搜索引擎搜索解决一下。


Linux下安装pyinstaller用于将py文件打包生成一个可执行文件
一、安装使用流程

1. 首先给系统装个easy_install, 如果装了的可以跳过这步
到pypi官方网址 https://pypi.python.org/pypi/setuptools 去download最新版本

2. 官网上下载pyinstaller,当前的最新版本是2.1
(1) 网址 http://www.pyinstaller.org/

3.解包进入源码目录
(1)

tar -zxvf pyinstaller_2.1.tar.gz

(2)

cd pyinstaller-2.1

运行

python setup.py install

4. 拷贝py文件
将需打包的py文件如test.py 拷贝到当前目录

5. 生成可执行文件
cd到pyinstaller目录, 执行

python pyinstaller.py test.py

二、可能遇到的问题

1. 用户权限
直接在root用户下运行pyinstaller会报错 “cannot run pyinstaller as user root"...
所以需新增另外一个用户,并给用户对pyinstaller所在的目录及所有父目录添加读写权限,避免运行后报‘mkdir' permission denied...

2. 找不到python lib动态库
su切换到新增用户后,
pyinstaller报错找不到python动态库

raise IOError("Python library not found!")
IOError: Python library not

执行python --version查看当前版本,并查找/usr/local/lib 下有没有对应版本的libpython*.*.so文件,
如果有则跳过这步,如果没有则需要重新安装python,在python安装配置中一定要加上--enable-shared参数就可以生成对应动态链接库,如:

#./configure --enable-shared --prefix=/usr/local
#make
#make install

我环境中更新过python版本,导致/usr/lib下不是最新版本的库文件,需要将新版本拷贝到对应的/usr/lib目录下,注意有两个文件:

#cp libpython*.so /usr/lib/
#ln -s /usr/lib/libpython*.so.1.0 /usr/lib/libpython*.so
Python 相关文章推荐
python实现的各种排序算法代码
Mar 04 Python
Python文件及目录操作实例详解
Jun 04 Python
python中MethodType方法介绍与使用示例
Aug 03 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
python flask安装和命令详解
Apr 02 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
Django框架视图介绍与使用详解
Jul 18 Python
Python Process多进程实现过程
Oct 22 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 Python
python实现对doc、txt、xls等文档的读写操作
Apr 02 Python
Python遍历目录中的所有文件的方法
Jul 08 #Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 #Python
使用Python读写及压缩和解压缩文件的示例
Jul 08 #Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 #Python
Python中使用platform模块获取系统信息的用法教程
Jul 08 #Python
Python中的os.path路径模块中的操作方法总结
Jul 07 #Python
简介Python的collections模块中defaultdict类型的用法
Jul 07 #Python
You might like
透析PHP的配置文件php.ini
2006/10/09 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
2013/04/15 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
python调用shell的方法
2013/11/20 Python
python日志模块logbook使用方法
2019/09/19 Python
Python with语句和过程抽取思想
2019/12/23 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
美国女孩服装购物网站:Justice
2017/03/04 全球购物
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
艺术爱好者的自我评价分享
2013/10/08 职场文书
高中毕业自我鉴定
2013/12/22 职场文书
质量月活动策划方案
2014/03/10 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
Vue vee-validate插件的简单使用
2021/06/22 Vue.js