使用Pyinstaller打包成EXE文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Pyinstaller打包成EXE文件相关的知识,希望对你有一定的参考价值。

参考技术A

pyinstaller能够在Windows、Linux等操作系统下将Python脚本打包成可直接运行程序。使Python脚本可以在没有安装Python的环境中直接运行,方便共享。

python 2.7.12 + Windows7

1.待转换的.py文件绝对路径最好不要包含中文字符。容易出现一些莫名其妙的问题。

2.python中需要有.py文件中用到的第三方库。否则在转换后的.exe文件中会出现不符合预期的结果。

1.配置pip镜像源。

在用户家目录下创建pip目录和pip.ini文件。方法如下

step1: 获取HOMEPATH变量对应的路径,执行 set HOMEPAT H也可以执行 echo %HOMEPATH% 获取。

上述结果说明用户家目录HOMEPATH对应的路径为C:\\Users\\Administrator。

step2: 在C:\\Users\\Administrator目录下创建pip目录,并在pip目录下创建pip.ini文件。如果已经有pip目录和pip.ini文件,跳过。 特别说明的是,pip.ini文件的后缀是.ini,注意隐藏扩展文件名可能造成的影响。 在pip.ini文件中添加相关内容并保存:

step3: 测试pip工具,确认是否能够自动安装第三方库,如使用pip自动安装Pexpect类库。

step4: 进入python工具,执行import pexpect导入模块命令,没有报错说明pip自动安装pexpect库成功。

step5: 结束安装,后续安装第三方库就可以在任意路径下直接执行pip install $PackageName进行安装。

2.打开cmd命令行窗口,输入 pip install pyinstaller ,安装pyinstaller库。

3.确认pyinstaller安装结果,位于c:\\Python27\\Scripts路径下。执行 where pyinstaller 查看

pyinstaller [options] script

例如: pyinstaller -F myscript.py

options常用选项说明:

pyinstaller其实就是把python解释器和脚本打包成一个可执行文件,和编译成真正的机器码是完全两回事。所以打包不一定会提高运行效率,可能会降低运行效率,但是好处是在运行者机器上不用安装python和脚本所依赖的库。
输入指定的脚本后,首先pyinstaller会分析该脚本所依赖的其他依赖,然后进行查找、复制,把所有相关的依赖都收集起来并进行加密处理,包括python解释器,最后把这些文件放在一个目录下,或者打包到一个可执行文件,然后就可以直接运行所生成的可执行文件。
需要注意的是,使用pyinstaller打包生成的可执行文件,只能再和打包机器系统相同的环境下运行。32位python环境打包的程序可以运行在32/64位windows系统上。64位python环境打包的程序只能运行在64位windows系统上。所以如果想打包程序的话,建议使用32位python环境打包。

1.确认待转换的.py文件可正确运行,不存在语法错误。如ccc.py

2.执行 pyinstaller -F $Python脚本名 完成文件转换。.exe文件生成的绝对路径会在倒数第二行显示,通常位于当前目录下dist所在目录下。转换后的.exe文件名与python文件名相同。如下图所示

1.如果Python脚本使用到了第三方库,如何打包?
方法一:将第三方库对应的包复制到待打包python脚本的同目录下,再执行打包命令。
方法二:pyinstaller.exe -F 路径\\文件名.py 路径\\文件名.py

2.我的python脚本主要是命令行输出,但是程序执行完就退出无法查看相关信息,如何处理?
在python脚本最后一行添加命令:os.system(\'pause\') 或者 raw_input(\'Press enter any key to exit...\')

3.我想给我的打包后的执行程序换个图标,如何处理?
使用参数-i。如命令:pyinstaller -F -i tupian\\qq.ico ccc.py。文件后缀名必须是.ico

4.程序运行出现CMD窗口,如何去除?
带上参数-w即可。pyinstaller.exe -F call_login.py -w (-w表示去掉控制台窗口显示)

5.pip配置镜像源参考

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

pyinstaller官方网页:http://www.pyinstaller.org/

官方文档:https://pyinstaller.readthedocs.io/en/stable/

pyinstaller支持Python 2.7和Python 3.3+版本,并且支持Windows(XP+)、Mac OS X(10.7+)和Linux,但是只能在对应的系统编译对应的程序。

 

1、pyinstaller安装

在cmd(命令提示符)中直接安装

1 pip install pyinstaller

等待pip自动下载pyinstaller、pefile、pypiwin32、future共四个文件并自动安装,安装完成后输入

1 pyinstaller

会输出pyinstaller的使用方法如下:

 1 usage: pyinstaller-script.py [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
 2                              [-p DIR] [--hidden-import MODULENAME]
 3                              [--additional-hooks-dir HOOKSPATH]
 4                              [--runtime-hook RUNTIME_HOOKS]
 5                              [--exclude-module EXCLUDES] [--key KEY] [-d] [-s]
 6                              [--noupx] [-c] [-w]
 7                              [-i <FILE.ico or FILE.exe,ID or FILE.icns>]
 8                              [--version-file FILE] [-m <FILE or XML>]
 9                              [-r RESOURCE] [--uac-admin] [--uac-uiaccess]
10                              [--win-private-assemblies]
11                              [--win-no-prefer-redirects]
12                              [--osx-bundle-identifier BUNDLE_IDENTIFIER]
13                              [--distpath DIR] [--workpath WORKPATH] [-y]
14                              [--upx-dir UPX_DIR] [-a] [--clean]
15                              [--log-level LEVEL] [--upx UPX]
16                              scriptname [scriptname ...]
17 pyinstaller-script.py: error: the following arguments are required: scriptname

 

2、pyinstaller使用

直接在CMD中输入命令:

1 pyinstaller -F -w E:\\Programer\\Python\\scraping\\demo3.py

在经过一系列的信息和警告输出后完成,会提示出生成的exe文件存放在哪儿。
技术分享

找到目录C:\\Windows\\system32\\dist\\文件夹(可能也在C:\\Windows\\SysWOW64\\dist\\文件里,估计和Python 32bit/64bit有关),即可运行生成的exe文件

[options]

-F  生成一个exe单文件

-D  生成一个文件夹(默认选项)

以上是关于使用Pyinstaller打包成EXE文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用pyinstaller打包python文件为exe文件

Python打包为exe文件

[Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件

使用pyinstaller打包多文件项目成一个exe

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

pyinstaller 打包python文件成.exe程序