使用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实现的去除win下文本文件头部BOM的代码
Feb 10 Python
使用python实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
python中pass语句用法实例分析
Apr 30 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
Python格式化日期时间操作示例
Jun 28 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
Python实现网站表单提交和模板
Jan 15 Python
Python3实现的旋转矩阵图像算法示例
Apr 03 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
Python hashlib常见摘要算法详解
Jan 13 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程序员的技术瓶颈分析
2011/07/17 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
php中explode与split的区别介绍
2012/10/03 PHP
解析PHP提交后跳转
2013/06/23 PHP
php常用正则函数实例小结
2016/12/29 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
js模拟类继承小例子
2010/07/17 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
在React 组件中使用Echarts的示例代码
2017/11/08 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
Vue分页效果与购物车功能
2019/12/13 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
django中send_mail功能实现详解
2018/02/06 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
python中的数据结构比较
2019/05/13 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
HTML5进度条特效
2014/12/18 HTML / CSS
会计电算化应届生自荐信
2014/02/25 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
学风建设演讲稿
2014/09/12 职场文书
婚宴新娘致辞
2015/07/28 职场文书
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python