使用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的Django框架中的select_related函数对QuerySet 查询的优化
Apr 01 Python
在Python中使用模块的教程
Apr 27 Python
详解flask入门模板引擎
Jul 18 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
详解Python 中sys.stdin.readline()的用法
Sep 12 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
如何用python处理excel表格
Jun 09 Python
python如何爬取网页中的文字
Jul 28 Python
python如何实现图片压缩
Sep 11 Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 Python
Python+Tkinter打造签名设计工具
Apr 01 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
基于mysql的bbs设计(一)
2006/10/09 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
四个PHP非常实用的功能
2015/09/29 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
Javascript中replace()小结
2015/09/30 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
详解nodejs中express搭建权限管理系统
2017/09/15 NodeJs
10个经典的网页鼠标特效代码
2018/01/09 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
python中bisect模块用法实例
2014/09/25 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
使用Scrapy爬取动态数据
2018/10/21 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
品德评语大全
2014/05/05 职场文书
2014年信用社工作总结
2014/11/25 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
悬空寺导游词
2015/02/05 职场文书
老公保证书怎么写
2015/02/26 职场文书
大学生英文求职信范文
2015/03/19 职场文书
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android