使用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中的列表知识点汇总
Apr 14 Python
python集合用法实例分析
May 30 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 Python
python远程连接服务器MySQL数据库
Jul 02 Python
详解python中的模块及包导入
Aug 30 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
python操作gitlab API过程解析
Dec 27 Python
python利用opencv实现SIFT特征提取与匹配
Mar 05 Python
Python reversed函数及使用方法解析
Mar 17 Python
让Django的BooleanField支持字符串形式的输入方式
May 20 Python
Python 跨.py文件调用自定义函数说明
Jun 01 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 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提高编程效率的20个要点
2015/09/23 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
javascript实现计算器功能
2020/03/30 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
python八皇后问题的解决方法
2018/09/27 Python
浅谈django channels 路由误导
2020/05/28 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
有创意的广告词
2014/03/18 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
文员试用期转正自我鉴定
2014/09/14 职场文书
学校运动会广播稿
2014/10/11 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
工作调动申请报告
2015/05/18 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
创业计划书之美甲店
2019/09/20 职场文书
MongoDB 常用的crud操作语句
2021/06/20 MongoDB