网站建设需招聘什么专业人,西安市网站,centos yum wordpress,企业网站建设方案费用预算注#xff1a; 从个人博客园 移植而来
环境#xff1a; Windows7 Python 2.7
参考#xff1a;
使用pyinstaller打包python程序
Pyinstaller 打包发布经验总结
Using PyInstaller 简介
使用python引用第三方的各种模块编写一个工具后#xff0c;如果想发给其他人…注 从个人博客园 移植而来
环境 Windows7 Python 2.7
参考
使用pyinstaller打包python程序
Pyinstaller 打包发布经验总结
Using PyInstaller 简介
使用python引用第三方的各种模块编写一个工具后如果想发给其他人他们必须配置相关的环境才能使用因此将python打包成exe就会方便许多。
我们可以使用Pyinstaller主要原理是:
读取你的python脚本分析其代码以发现脚本执行所需的其它模块和库(依赖项)然后将这些文件的一起放到特定的单个文件夹或可执行文件中生成exe执行文件。
官方文档Document 配置
安装命令
pip install pywin32 # pyinstaller会需求pywin32的某些接口
pip install pyinstaller若在安装pyinstaller的时候可能会报错。我们可进入官网下载 下载文件后解压cmd命令窗口进入到对应目录下 输入命令python setup.py install
如此pyinstaller的环境算是配置好了。验证的话
# 在cmd中输入命令检测下版本号
pyinstaller -v # 或者通过pip检测下包是否安装
pip list简单使用
新建文件夹test,并编写一个简单的python文件内容如下
print(Hello PythonInstaller)
# 添加此处为了避免exe打开一闪而过
input() 在test中打开cmd窗口输入命令
# -F 表示生成结果是exe文件 -D表示结果生成一个目录
pyinstaller -F test.py
注意
针对于单一的python文件推荐使用 -F 命令
若python文件调用了相关的资源文件建议在生成exe的目录下将资源文件拷贝到该目录下否则会报错cmd会在test文件夹下生成build,dist文件目录 build: 用于存放pyinstaller运行的中间文件文件夹内的warn文件用于记录打包时遇到的一些问题可作为参考 dist: 用于存放生成的exe文件
注意针对于单一的python文件推荐使用-F命令若python文件调用了相关的资源文件建议将资源文件拷贝生成的exe目录下否则会报错。
比如我有这样的在cmd窗口输入汉字生成拼图的工具其目录为 res 放置了python拼图需要的.png或.jpg资源文件 HZK16 用于将汉字解析为矩阵的字库文件 tool.py 执行脚本
在该目录下打开cmd命令窗口输入命令
pyinstaller -F tool.py命令会额外生成builddist文件夹此时我们需要将resHZK16复制粘贴到dist目录下然后点击tool.exe 才能执行成功。效果图为 HZK16相关示例: 参考
复杂使用
一般情况下我们将python打包exe会包含多个代码文件资源等故此我们需要了解下pyinstaller的命令。
参数描述命令-h显示帮助pyinstaller -h-v显示版本号pyinstaller -v-F生成一个exe文件所有的依赖资源和代码都打包到exe中pyinstaller -F test.py-D生成一个目录包含所有的依赖资源和exepyinstaller -D test.py–log-level LEVELLEVEL有5个等级分别为 TRACE, DEBUG, INFO, WARN, ERROR用于控制编译时pyi打印的消息-F --log-level ERROR-n NAMENAME为生成.exe和.spec的文件名默认执行脚本的名称-F test.py -n NewTest-p DIRDIR为额外的import路径若有多个用“”隔开–hidden-import NAMEpyi在分析的过程中有些import没有分析出来可使用此命令且此命令可多次使用–exclude-modeulepyi分析的相互关联的库若某些库没用可使用该命令用于减少生成文件的大小–key KEYKEY是用于加密python字节码的秘钥一般为16的字符串-d调试使用用于生成exe时输出pyi的一些日志有助于查错-c显示命令行窗口-w隐藏命令化窗口可用于GUI程序-i NAMENAME为应用程序的icon图标windows上使用.ico Mac上使用.icns图标的获取可参考https://www.easyicon.net/pyinstaller -F test.py -i icon.ico–version-file FILEFILE为应用程序添加的版本信息文件-m FILEFILE为应用程序添加的manifest文件
为了更便捷的打包exe我们可以通过自定义配置.spec文件来完成打包。
# 在脚本的目录下都会生成指定的test.spec文件
pyinstaller -F test.py
pyinstaller -D test.py# 我们也可以这样生成此种生成不会产生builddist文件夹
# 官网https://pyinstaller.readthedocs.io/en/stable/spec-files.html
pyi-makespec test.py该文件实质上是可执行的python文件pyInstaller通过相关的配置来构建应用程序。当spec文件构建后其大多数命令选项
都编码在文件中因此若在命令行中使用已包含的命令将会被忽略。尚且有效的命令行选项有
--upx-dir --distpath --workpath
--noconfirm --ascii --clean文件的显示内容如下
# -*- mode: python ; coding: utf-8 -*-
block_cipher None# 用于分析.py文件依赖的模块和库
a Analysis(# scripts: 指定文件名的.py脚本列表,不同文件之间以,分割[test.py],# 在sys.path之间搜索的可选路径列表一般已生成.spec的默认目录为准pathex[C:\\Users\\wangxuhe\\Desktop\\test],# 附加二进制文件(.dll等)的可选列表命令--add-binarybinaries[],# 要包含的附加数据文件的可选列表命令--add-datadatas[],# 要包含的附加隐藏模块的可选列表命令--hidden-import MODULENAMEhiddenimports[],# 用于搜索钩子的附加路径的可选列表命令: --additional-hooks-dir HOOKSPATHhookspath[],# 可选的脚本列表用作用户的运行时挂钩。命令--runtime-hook RUNTIME_HOOKS runtime_hooks[],# 一个可选的模块或包名列表(它们的Python名)该列表将被忽略。命令--exclude-module EXCLUDESexcludes[],# 若为True则不希望在搜索Windows SxS程序集时遵循版本重定向win_no_prefer_redirectsFalse,# 若为True则将所有绑定的Windows SxS程序集更改为私有程序集以强制执行程序集版本win_private_assembliesFalse,cipherblock_cipher,# 若为True不要将源文件放在归档文件中而是将它们作为单独的文件保存noarchiveFalse)# 用于创建包含所有python模块的Zlib包含程序运行需要的所有依赖文件
pyz PYZ(a.pure, # pyz的文件名a.zipped_data,# 用于加密python字节码的密码cipherblock_cipher)# 用于构建最终的执行文件由Analysis和PYZ生成
exe EXE(pyz,a.scripts,[],# 若为True将exe构建转发给pkgexclude_binariesTrue,# 可执行文件.exe的文件名nametest,# exe的图标资源iconicon.ico,# 若为True则可从执行文件获取调试信息debugFalse,# window默认False非windows使用用于引导程序忽略可忽略的信息bootloader_ignore_signalsFalse,stripFalse,upxTrue,# 若为true则显示控制台consoleTrue)# 用于生成非执行文件外的文件夹在单文件模式下不会调用且该接口也可以没有故此不再描述
coll COLLECT(exe,a.binaries,a.zipfiles,a.datas,stripFalse,upxTrue,upx_exclude[],nametest)未完待续…