使用pyinstaller打包程序,pyinstaller打包exe缺少运行库

  使用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 3360release

  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。

使用pyinstaller打包程序,pyinstaller打包exe缺少运行库