pyinstaller打包pytorch、opencv、onnxruntime-gup、pyqt5成exe可移植

这篇具有很好参考价值的文章主要介绍了pyinstaller打包pytorch、opencv、onnxruntime-gup、pyqt5成exe可移植。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

  1. 打包单文件

  2. 打包多文件

1、打包单文件

        pyinstaller在打包过程中会自动将脚本文件里的import库自动打包到软件中,所以不需要在打包时再添加到.spec文件中。

       打包过程如下:

a、在conda虚拟环境中创建新的环境来安装需要的包以及pip install pyinstaller,也可以在原程序的虚拟环境下安装pyinstaller直接打包,区别在于新建环境安装需要的包会使打包文件更小。

b、使用anaconda prompt命令行激活环境,转到需要打包的程序文件夹下,使用如下命令转换文件夹位置:如果是D:\detect\project。先输入D:转到D盘,然后输入cd D:\detect\project转到对应文件

c、输入pyinstaller --onefile your_script.py进行打包

这将使用pyinstaller工具将Python文件打包成一个独立的可执行文件。

--onefile选项表示将所有依赖项合并为单个可执行文件,而不是生成多个文件。

2、打包多文件

a、b步骤相同

c、推荐使用pyinstaller -D  xxxxx.py命令进行打包,会在脚本的文件夹下生成一个*.spec文件。

*.spec文件包含了打包需要使用的所有配置信息。直接在命令行中将*.spec文件路径传给pyinstaller,也可以进行打包。比如:

pyinstaller my_app_name.spec
(其中my_app_name.spec是根据my_app_name.py生成的Spec文件) 

这样,当你多次打包同一个项目时,就无需每次都传入那么多参数,只需要传入*.spec文件的路径即可。

*.spec文件也比较好处理,直接使用python编辑器或记事本就能编辑。

d、更改生成的.spec文件

# -*- mode: python ; coding: utf-8 -*-
import sys ; sys.setrecursionlimit(sys.getrecursionlimit() * 5)

block_cipher = None


a = Analysis(
    ['threadwhile.py'],
    pathex=['D:\Detectproject'],//打包程序路径
    binaries=[],
    datas=[('ui/Detect.ui','ui'),('onnx/best.onnx','onnx')],//ui/Detect.ui相对打包程序路径 
                                                              下的文件,ui为要放入打包好的 
                                                              程序里的文件夹。这行代表要加 
                                                              入的外部数据
    hiddenimports=[],                                       //这段添加要包含的库如.dll
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    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='threadwhile',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=True,                                       //是否使用控制台对应-w
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='threadwhile',
)

pyinstaller打包opencv,pytorch,opencv,人工智能一般情况下('ui/Detect.ui','ui'),('onnx/best.onnx','onnx')这两个数据不需要特别添加。

注意在代码中使用了相对路径的得按照标准的相对路径拼接成绝对路径,或者直接写死成绝对路径,有相对路径的情况下使用-D打包不会出错,使用-F打包会出现问题

e、根据报错情况从anaconda3\envs\yolov5\Lib\site-packages虚拟环境路径下的包路径把相应的包拷贝到Detectproject\dist\threadwhile下。例如onnxruntime报错显示找不到cuda就将anaconda3\envs\yolov5\Lib\site-packages\onnxruntime文件夹里的文件拷贝到Detectproject\dist\threadwhile\onnxruntime中缺少的补全下。

还有一种情况会缺少在torch/lib/caffe2_nvrtc.dll文件,这时候需要在虚拟环境envs\yolov5\bin下面的文件拷贝到torch/lib下,复制完之后出现无法加载cudart32_110.dll的情况是因为系统是64位的,只需要将其删除就可

一些走过的弯路,

1、环境最后是按照能跑通的程序环境一致,可以使用conda list -e > requirements.txt导出需要的包及版本,在新环境中使用conda install --yes --file requirements.txt安装需要的环境

2、pyinstaller的版本更换后导出来的程序报错都不一样,但是推荐使用新版本的pyinstaller可以避免一些问题(pyinstaller==5.13.2)

3、建议关闭电脑的防火墙和实时保护,别问为什么,踩过

4、将打包后的exe文件拖到cmd命令提示符中可以查看报错文章来源地址https://www.toymoban.com/news/detail-799257.html

到了这里,关于pyinstaller打包pytorch、opencv、onnxruntime-gup、pyqt5成exe可移植的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pyinstaller打包技巧

    当我们使用Python开发好程序需要打包成exe时,主流的做法便是使用pyinstaller,这玩意,看似简单,其实挺麻烦的,坑比较多,特别是涉及到比较复杂的库时,另外一个麻烦的事情是,打包失败后,搜索到的很多解决方案是没有效果的。 前一段时间,我用Python开发了视频同步助

    2024年02月13日
    浏览(31)
  • Pyinstaller打包报错小结

    1.Pyinstaller打包exe文件,执行后提示缺失yaml,csv,dll等资源文件。 2.打包后运行提示 WARNING: file already exists but should not: C:UsersADMINI~1AppDataLocalTemp_MEI130922torch_C.cp38-win_amd64.pyd。 3.运行exe闪退。 4.(ModuleNotFoundError: No module named \\\'tensorflow_core.python及FileNotFoundError:No such file or dire

    2024年02月11日
    浏览(48)
  • Python文件打包(pyinstaller,nuitka)

    ##背景:最近用Pyqt5编写界面后考虑到一些用户没有程序的运行环境,故而需要打包为exe程序提供给用户使用,在经过一番资料的查询以及踩坑后,写下了这篇博客,目前主要有两种主流的方法。分别是使用Pyinstaller与Nuitka进行打包。下面分享一下两种方法的具体使用与心得。

    2024年02月16日
    浏览(53)
  • Python ---- pyInstaller 的常用打包命令

    1. 简介 PyInstaller是一个第三方库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理。 PyInstaller支持Python 2.7和Python 3.3+。可以在Windows、Mac OS X和Linu

    2024年02月14日
    浏览(48)
  • 详解 pyinstaller 打包多个py文件

    最近有个需求要把python项目打包成可执行程序运行,看了很多帖子,大多数博主都采用pyinstall 打包,看着也不难,本以为很简单的事情,对于我这个新手来说也折腾了2个多小时吧,记录下遇到的坑,和大家分享,希望能给予你们帮助,少走弯路。 pip install pyinstaller 在sample

    2023年04月13日
    浏览(44)
  • 【Python】项目打包:如何使用PyInstaller打包python程序(exe)

    常用python的开发者现在也是很多的,用python可以做很多事情,如果涉及到python桌面开发一定会使用PyInstaller将程序打包成 执行程序 ,如果要求更高的话还会再次封装成 安装程序 (工具inno setup)。 执行程序就是复制到其他电脑可以直接运行,不需要安装配置python环境。 安装

    2024年02月13日
    浏览(59)
  • pyinstaller打包Mediapipe时遇到的问题

    使用pyinstaller对python文件打包 安装pyinstaller 打包文件 打包完成后会生成一个dist文件夹,打包的文件会在里面,找到test.exe。 加上-F会把所有的文件打包成一个exe,也是在dist文件夹下。 写了一段关于Mediapipe的程序,定义为Pose.py,这里我使用 下面的命令打包 打包完成后,运行

    2024年02月03日
    浏览(33)
  • Python pyinstaller打包exe最完整教程

    python提供了多种方法用于将普通的*.py程序文件编译成exe文件(有时这里的“编译”也称作“打包”)。exe文件即可执行文件,打包后的*.exe应用不用依赖python环境,可以在他人的电脑上运行。 pyinstaller是一个第三方模块,专用于python程序的exe打包。此外python还有一些别的方法

    2024年02月08日
    浏览(48)
  • 【Python】pyinstaller全新的打包方案,堪称完善!

    如果我要写一个 Python 项目,打包成 exe 运行(方便在没有 Python 的电脑上使用),我需要打包出的根目录结构美观,没有多余的、杂乱的依赖文件在那里碍眼,而且需要在发现 bug 时,我还需要能够修改里面的代码后,无需再次打包,就能正常运行,该怎么做呢? 就以一个

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包