pyinstaller 库的使用

PyInstaller是一个十分有用的第三方库,它能够在Windows、Linux、Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。PyInstaller 需要在命令行(控制台)下用pip 工具安装,如下:
:\>pip install pyinstaller

 
:\>pip3 install pyinstaller

PyInstaller 的官方网站网址为 http://www.pyinstaller.org/。PyInstaller 库会自动将 PyInstaller 命令安装到 Python 解释器目录中,与 pip 或 pip3 命令路径相同,因此可以直接使用。使用PyInstaller 库十分简单,请注意,由于 PyInstaller 不支持源文件命中有英文句号(.)存在,假设 dpython.py 文件在 D:\codes 目录中,命令如下:

:\>pyinstaller dpython.py

:\>pyinstaller D:\codes\dpython.py

执行完毕后,源文件所在目录将生成 dist 和 build 两个文件夹。其中,build 目录是 pyinstaller 存储临时文件的目录,可以安全删除。最终的打包程序在 dist 内部的 dpython 目录中。目录中其他文件是可执行文件 dpython.exe 的动态链接库。可以通过-F 参数对 Python 源文件生成一个独立的可执行文件,如下:

:\>pyinstaller -F dpython.py

执行后在 dist 目录中出现了 dpython.exe 文件,没有任何依赖库,执行它即可。使用 PyInstaller 库需要注意以下问题:文件路径中不能出现空格和英文句号(.);源文件必须是 UTF-8 编码,暂不支持其他编码类型。采用 IDLE编写的源文件都保存为 UTF-8 编码形式,可直接使用。PyInstaller 有一些常用参数,如下所示:

-h, --help 查看帮助
-v, --version 查看 PyInstaller 版本
--clean 清理打包过程中的临时文件
-D, --onedir 默认值,生成 dist 目录
-F, --onefile 在 dist 文件夹中只生成独立的打包文件第 
-p DIR, --paths DIR 添加 Python 文件使用的第三方库路径
-i <.ico or .exe,ID or .icns>,--icon <.ico or .exe,ID or .icns >指定打包程序使用的图标(icon)文件

PyInstaller 命令不需要在 Python 源文件中增加代码,只需要通过命令行进行打包即可。-F 参数最为常用,对于包含第三方库的源文件,可以使用-p 添加第三方库所在路径。如果第三方库由 pip 安装且在Python 环境目录中,则不需要使用-p 参数。

python打包发布

跟所有python小白一样,我也遇到了python打包发布的问题!

进过2天的不断百度谷歌,终于解决了这个蛋疼的问题;过程中遇到了一些问题,记录下来以免遗忘!

先用了py2exe,由于项目里面需要访问oracle数据库,导入cx_oracle模块,就是这个蛋疼的东西坑咯!

安装cx_oracle的过程就不多说了 这个帖子讲得很清楚:http://evil850209.iteye.com/blog/1394932

Oracle Instant Client 设置环境变量是让python可以取到oci.dll,所以很多人把oci.dll, oraocci11.dll,oraociei11.dll都放到了Python27\Lib\site-packages目录下面,也能解决问题;

用py2exe打包后  dist里面有一个msvcp80.dll的文件,系统版本不一样名称不一样,有可能是msvcp90.dll、msvcp71.dll

这样打包就完成了, 问题也来了, 用64位的python,其它模块都是64位的,打包出来的64位程序在64位系统上运行没有问题, 用32位的python(其它也是32位)打包出来的程序在windows server 2003服务器系统上,始终不能正常运行,经调试是导入cx_oracle模块出错,“ Loaded failed ,找不到指定的模块”  复制各种dll进去都没解决到;最后放弃py2exe

改用pyinstall

1、下载pyinstaller

目前pyinstaller支持的python版本为2.3-2.7,可以到http://www.pyinstaller.org/官网下载。

2、安装

下载完成后,解压即可。

3、pyinstaller使用方法

使用也非常的简单,cmd下进入解压出来的目录,执行如下命令。

python pyinstaller.py [opts] yourprogram.py

主要选项包括:

-F, –onefile 打包成一个exe文件。 -D, –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。 -c, –console, –nowindowed 使用控制台,无界面(默认) -w, –windowed, –noconsole 使用窗口,无控制台

更详细的使用方法请参考下载包里的doc目录下的Manual.html文件。

使用pyinstall的问题:

打包时出现类似这种情况:

File "C:\Python27\lib\ctypes\util.py", line 54, in find_library
fname = os.path.join(directory, name)
File "C:\Python27\lib\ntpath.py", line 108, in join
path += "\\" + b
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc1 in position 9: ordinal not in range(128)

【原因】

安装过程需要访问用户文件夹:

5490 INFO: Updating manifest in C:\Users\梁鑫辉\AppData\Roaming\pyinstaller\bincache00_py27_32bit\python27.dll

如果用户名是中文,不识别。

【解决办法】

修改ntpath.py,将import sys改为:

import sys
reload(sys)
sys.setdefaultencoding("gbk")

问题2:manifest could not be extracted

【现象】

程序运行时出现这个错误:

manifest could not be extracted

【原因】

不明。

【解决办法】

开始用

python pyinstaller.py -F test.py
打包成一个单一的文件,
换成
python pyinstaller.py -D test.py
生成一个目录 ,这样会把所有需要的dll都放在目录下面;解决问题; py2exe 和pyinstall 的对比; pyinstall会把需要的dll文件都复制过来,比较齐全;适合windows;在百度的时候看到有人说 py2exe是 用什么系统打包发布的,运行环境也最好是同样的系统,未证实; 通过
python pyinstaller.py -D test.py 完美解决windows server 2003 无法导入cx_oracle模块的问题;
 

python打包成为exe文件的更多相关文章

  1. Pyinstaller(python打包为exe文件)

      需求分析: python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速. 当然打包的脚本似乎不是在所有的win平台下都能使用, ...

  2. Pyinstaller (python打包为exe文件)

    需求分析: python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速. 当然打包的脚本似乎不是在所有的win平台下都能使用,wi ...

  3. 反编译python打包的exe文件

    目录 1.前言 2.使用环境 3.还原过程 4.号外 5.exe文件和所用到的反编译工具 6.参考 7.去签名(补漏) 前言 拿到了利用驱动人生进行传播的病毒样本,发现是python打包成的exe文件 ...

  4. 使用pyinstaller将Python打包为exe文件

    当我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序,那么pyInstaller就是一个很好的选择.pyInstaller可以将 ...

  5. Python打包成exe文件很难?一分钟即可学会,并添加图标!

    环境1.python 3.72.pyinstaller下载方式:2.1 python安装(略)2.2 安装pyinstaller打开DOS窗口输入以下命令:pip install pyinstalle ...

  6. python打包生成exe文件

    今天任务让做一个可以在Win上直接执行的脚本,百度了下原来可以生产.exe文件.神奇了 安装 pyInstaller pip install pyInstaller  进入要打包文件的目录 执行 py ...

  7. python打包为exe文件

    1.安装 pyinstaller 包 pip3 install pyinstaller 2.进入python文件目录 进入Python程序文件夹py文件处,按住shift并且右键,在弹出的选项中点击& ...

  8. 将python打包为.exe文件

    第一步:在https://pypi.python.org/pypi/PyInstaller/2.1 下载pyinstaller. 第二步:解压缩,在该目录下命令行中执行python setup.py ...

  9. 使用pyinstaller将python打包成exe文件

    步骤: 1)win+R 输入cmd打开dos窗口   2)先安装pyinstaller: pip install pyinstaller 3)然后使用cd命令进入项目文件的路径下:   4)再使用命令 ...

随机推荐

  1. 使用 /proc 文件系统

    /proc 文件系统是一个特殊的软件创建的文件系统, 内核用来输出消息到外界. /proc 下 的每个文件都绑到一个内核函数上, 当文件被读的时候即时产生文件内容. 我们已经见到 一些这样的文件起作用 ...

  2. 【数位DP】[LOJ10163]Amount of Degrees

    发现自己以前对数位DP其实一窍不通... 这题可以做一个很简单的转换:一个数如果在$b$进制下是一个01串,且1的个数恰好有k个,那么这个数就是合法的(刚开始没判断必定是01串,只判断了1的个数竟然有 ...

  3. Loadrunner学习---脚本编写(1)

    Loadrunner学习---脚本编写(1) 中午看了两集<奋斗>发现越看越想看,但是想到好不容易没上班,在家还是赶紧学习下LR的知识吧.下面这个网页的文章原来也是看过的,但发现没几天就忘 ...

  4. opencv3 使用glob遍历并修改文件名

    1.函数说明 string::find()函数:是一个字符或字符串查找函数,该函数有唯一的返回类型,即string::size_type,即一个无符号整形类型,可能是整数也可能是长整数.如果查找成功, ...

  5. LUOGU P1291 [SHOI2002]百事世界杯之旅 (期望dp)

    传送门 解题思路 期望$dp$.因为这个是期望步数,所以要倒着推.那么这道题就变得一脸可做了,设$f[i]$表示还有$i$张牌没有收集的期望,那么考虑再抽一张,有$(n-i)/n$的概率抽到抽过的牌, ...

  6. 服务器迁移部署OmsEdi

    基本配置 绑定 高级设置

  7. 常用es6特性归纳-(一般用这些就够了)

    之前做vue和react的时候,发现文档什么的最新版本都建议用es6写法,对es6友好度更高,加之现在es6也越来越普及,兼容性问题直接用babel转码就好了,特别方便,于是我开始学着用es6写代码, ...

  8. Leetcode946. Validate Stack Sequences验证栈序列

    给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true:否则,返回 false . 示例 1: 输入:pus ...

  9. Ubuntu下samba的安装和配置

    samba是Linux系统上的一种文件共享协议,可以实现Windows系统访问Linux系统上的共享资源,现在介绍一下如何在Ubuntu 14.04上安装和配置samba一. 一.更新源列表 打开&q ...

  10. github的账号密码 redis windows版连接方式

    账号:Pinshuducha 邮箱:java_zhoulu@163.com 密码:zhoulu1994 服务器端: 启动:redis-server.exe redis.windows.conf 客户端 ...