使用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多线程
Nov 14 Python
python与php实现分割文件代码
Mar 06 Python
深入理解python中的select模块
Apr 23 Python
Python科学画图代码分享
Nov 29 Python
Python实现的多项式拟合功能示例【基于matplotlib】
May 15 Python
Python Series从0开始索引的方法
Nov 06 Python
python2使用bs4爬取腾讯社招过程解析
Aug 14 Python
python Canny边缘检测算法的实现
Apr 24 Python
Django自带用户认证系统使用方法解析
Nov 12 Python
基于Python的接口自动化读写excel文件的方法
Jan 15 Python
Pyside2中嵌入Matplotlib的绘图的实现
Feb 22 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 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连接SQLServer2005 的问题解决方法
2010/07/19 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
PHP实现的json类实例
2015/07/28 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
如何运行Python程序的方法
2013/04/21 Python
python socket多线程通讯实例分析(聊天室)
2016/04/06 Python
python正则实现计算器功能
2017/12/14 Python
理解python中生成器用法
2017/12/20 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
如何获取某个日期是当月的最后一天
2013/12/05 面试题
秘书专业自荐信范文
2013/12/26 职场文书
法院个人总结
2015/03/03 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL