使用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 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
跟老齐学Python之眼花缭乱的运算符
Sep 14 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
Nov 09 Python
python 列表删除所有指定元素的方法
Apr 19 Python
查看django版本的方法分享
May 14 Python
Python实现的爬取百度贴吧图片功能完整示例
May 10 Python
python之拟合的实现
Jul 19 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 Python
关于pandas的离散化,面元划分详解
Nov 22 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
python绘制汉诺塔
Mar 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
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
JavaScript使用cookie
2007/02/02 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
在Django的session中使用User对象的方法
2015/07/23 Python
python机器学习之神经网络(三)
2017/12/20 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
python处理“
2019/06/10 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
Python如何输出整数
2020/06/07 Python
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
C语言编程题
2015/03/09 面试题
趣味活动策划方案
2014/02/08 职场文书
工程建设实施方案
2014/03/14 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
学校欢迎标语
2014/06/18 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
贷款收入证明格式
2015/06/24 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python