使用pyinstaller打包程序,pyinstaller打包exe缺少运行库
文章PyInstallerPyInstaller安装pip安装pip升级PyInstaller使用PyInstaller打包其他文件,PyInstaller打包外部软件包。其他PC运行不了的问题。将打包的文件夹转换成exe文件。
本文的目的是在使用PyInstaller的过程中踩了很多坑,找了很多教程,让打包的exe软件在自己和别人的Windows PC上都能正常运行。
代码为交互式医学图像标注软件,GUI通过PyQt 5,深度学习算法基于PyTorch,外部包ROI AAI基于TensorFlow的crop_and_resize。
概述要打包的代码中包含的元素。
和checkpoint.pth.tar(手册。speck point.tar)的外部软件包RoIAlign(手动修改的。spec文件)中的模型。
检查点不会自动打包,因此必须手动修改spec文件,然后用spec重新打包。外部封装RoIAlign不会自动封装。您必须手动修改等级库文件,然后用等级库重新打包。由于spec的属性在生成的时候就已经确定了,所以在运行和重新打包spec的时候把参数改成make -D -F是无效的。可以在自己的电脑上运行,但是不能在别人的电脑上运行。这里的开发环境是:
window 10 Android 3 Python 3 . 6 . 10 py torch 1 . 2 . 0 py installer基本上是
安装pyinstallerpip pip安装pip升级pip安装-使用upgradepyinstallerpinstallerpinstallerpinstallerpinstaller
Pyinstaller main.py官方文档可以点击链接。
当然,你可以根据自己的需要改变参数。这里给出了对应于公共参数的含义。
含义-h,- help显示PyInstaller的帮助信息,-v,- version显示PyInstaller的版本信息-clean在打包前显示PyInstaller的缓存和临时文件-clear - onedir创建包含可执行文件的文件夹包(- onefile创建可执行包-重命名- name package-console生成的文件的文件名-)在Windows上,如果第一个脚本是一个"。pyw "文件,此选项可用。-w,窗口,-noconsoleswindows和Mac OS X:没有标准I/O的控制台窗口.在Mac OS X上,OS X .app捆绑软件的构建也是一个导火索。在Windows上,如果第一个脚本是“,”则设置此选项。pyw”文件。*在nix系统上,该选项将被忽略。其他参数可以通过点击链接进行查询。
其中捆绑什么,捆绑在哪里,建议在spec文件中修改。这边有个小建议,就是尽量不是用-F这个指令把所有文件打包成一个可执行的exe,容易出现问题和错误。使用PyInstaller时,首先使用-D将文件打包到一个文件夹中。然后,我会告诉你用哪个文件把这个文件夹转换成exe文件。易于调试,简单,并且可以压缩文件夹大小。
如果需要调试,请
运行exe时(比如pyinstaller -D -c main.py),会弹出一个控制台窗口,方便调试。
调试完成
Py-d-wmain.py这样运行exe时不会弹出控制台窗口,很好用。
要将其他文件打包到PyInstaller中,必须将深度学习模型权重文件打包在上面的My APP应用中。我是checkpoint.pth.tar。
假设包文件放在release文件夹中,根据上面的操作,release文件夹包含以下三个文件/文件夹:
多层建筑
发行版
主规格
此时,您需要修改Main.spec文件。
# -*-模式:python编码3360 utf-8-*-block _ cipher=nonea=analysis([。\ main.py],pathex=[ e 3360\release
des=[],win _ no _ prefer _ redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)pyz=PYZ(a.pure,a.zipped _ data,cipher=block _ cipher)EXE=EXE(PYZ,a.scripts,[],exclude_binaries=True,name=Controller ,debug=False,boot loader _ ignore _ signals=False,Stripe=false,upx=true,console=False)collect(EXE,a.binaries,a.zipfiles只需给出要添加的文件的路径和添加的路径。
a=分析([.\\main.py],pathex=[E:\\release],binaries=[],datas=[(.\\checkpoint.pth.tar , checkpoint.pth.tar)],hiddenimports=[],Hookspath=[],runtime _ hooks=[],exclusions=[],win _ no _ preference _ redirects=false,win _ private _ assemblies=false,cipher=block _ cipher,noarchive=false)然后用main.spec重新打包如前所述,如果用规格。因此,只需要
Pyinstaller main.spec就可以了。
之后,你应该可以在dist文件夹中找到checkpoint.pth.tar文件。
当然,更简单的方法是直接复制到dist。也没问题。
如何让PyInstaller打包外部包?如上所述,我在代码中使用了一个由crop_and_resize基于TensorFlow实现的外部包RoIAlign。
GitHub链接:https://github.com/longcw/RoIAlign.pytorch
当然现在PyTorch官方也提供了RoIAlign图层,可以直接使用。如果直接用官方的RoIAlign图层就不会有这个问题了。
让我们以使用外部包的情况为例。
虽然roi_align已经出现在dist文件夹中,但是我在操作过程中还是遇到了ROI _ align-0 . 0 . 2-py 3.6-win-amd64 . egg找不到的错误。我通过以下方式解决,这样就把需要的包和依赖文件添加到了dist文件夹中。
* *核心是根据错误信息添加相应的依赖文件。* *这只是一个例子。
的。规格文件仍需要修改。
# -*-模式:python编码:utf-8-*-从os导入sys sys sys . setrecursionlimit(5000)导入路径site _ packages=next(p for p in sys . path if site-packages in p)block _ cipher=Nonea=Analysis([.\\main.py],pathex=[E:\\release],binaries=[],datas=[(.\\checkpoint.pth.tar , checkpoint.pth.tar ),(path.join(site_packages, ROI _ align-0 . 0 . 2-py 3.6-Win-amd64 . egg ), ROI _ align-0 . 0 . 2-py 3.6-Win-amd64 . egg ),hiddenimports=[roi_align , crop_and_resize.py , crop_and_resize_cpu , scipy.special.cython_special],hookspath=[],runtime _ hooks=]原来问题是缺少Visual C可再发行版。解决方案是:
首先请确认Windows操作系统是32位还是64位(参考此链接查询);
确定系统版本后
A) 32位系统:“vc_redist.x86.exe”进行配置;
B) 64位系统:“vc_redist.x64.exe”进行配置;
微软官方提供这两个安装包,网上搜索也很多。
把包生成的文件夹变成单个exe。如上所述,可以直接用-F打包成单个exe,但不建议这样做。
我在这里使用英格玛虚拟盒子,下载链接
免费版就可以了。
运行Enigma虚拟盒
在“输入输入文件名”中选择exe文件main.exe,在“输入输出文件名”中选择输出路径和文件名。默认文件名是main_boxed.exe
然后点击左下角的添加…选择添加文件夹递归,然后选择dist文件夹,然后确认。
要压缩,选择右下角的文件选项并选中文件压缩。
等待压缩完成,然后你会得到一个单一的exe。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。