使用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之用while来循环
Oct 02 Python
python3实现暴力穷举博客园密码
Jun 19 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
Python实现的求解最小公倍数算法示例
May 03 Python
Python高级用法总结
May 26 Python
Python将文本去空格并保存到txt文件中的实例
Jul 24 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
对Python模块导入时全局变量__all__的作用详解
Jan 11 Python
Python基础之条件控制操作示例【if语句】
Mar 23 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
Django对接elasticsearch实现全文检索的示例代码
Aug 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:风雨欲来 路在何方?
2006/10/09 PHP
PHP 模板高级篇总结
2006/12/21 PHP
php sprintf()函数让你的sql操作更安全
2008/07/23 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
2019/08/05 PHP
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
深入解析Python中的变量和赋值运算符
2015/10/12 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
pip命令无法使用的解决方法
2018/06/12 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
python数据类型强制转换实例详解
2020/06/22 Python
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
数控专业个人求职信范例
2013/11/29 职场文书
《盲人摸象》教学反思
2014/02/16 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
《春天来了》教学反思
2014/04/07 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
Java实现带图形界面的聊天程序
2022/06/10 Java/Android