使用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实现哈希表
Feb 07 Python
python进程类subprocess的一些操作方法例子
Nov 22 Python
详解python3实现的web端json通信协议
Dec 29 Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 Python
Python的地形三维可视化Matplotlib和gdal使用实例
Dec 09 Python
Python面向对象程序设计示例小结
Jan 30 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
PyQt5实现简易电子词典
Jun 25 Python
python调用自定义函数的实例操作
Jun 26 Python
Python 实现一行输入多个数字(用空格隔开)
Apr 29 Python
Django中使用Json返回数据的实现方法
Jun 03 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 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
Zend 输出产生XML解析错误
2009/03/03 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
jQuery 连续列表实现代码
2009/12/21 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
python爬虫常用的模块分析
2014/08/29 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
深入解答关于Python的11道基本面试题
2017/04/01 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
python如何调用java类
2020/07/05 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
社区党总支书记先进事迹材料
2014/01/24 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python