首页 > 其他分享 >pyinstall通过配置.spec文件引用资源文件

pyinstall通过配置.spec文件引用资源文件

时间:2024-08-15 17:41:49浏览次数:6  
标签:文件 这里 钩子 列表 导入 为空 pyinstall spec

pyinstall通过配置.spec文件引用资源文件

pyinstall可以自动将所有依赖的.py文件连接起来编译成一个可执行exe文件,但是如果在程序中 使用了外部资源,如图片,或者是其它的配置文件的时候。pyinstall直接编译生成的exe文件可能会找不到程序中引用的资源。

这时候我们就需要进入.spec文件中修改对应的配置项,引入我们需要的依赖,下面是.spec文件中的一部分内容,我们今天主要就是通过修改这里的datas来连接外部数据文件

a = Analysis(
    ['objdictedit.py'],    # 主程序或脚本文件的列表。这里只有一个文件 'objdictedit.py'。
    pathex=[],             # 指定 Python 解释器的搜索路径。这里为空列表,表示使用默认的搜索路径。
    binaries=[],           # 包含在打包文件中的二进制文件列表。这里没有指定任何二进制文件。
    datas=[], 		   # 需要包含在打包中的数据文件列表。
    hiddenimports=[],      # 需要明确指定的隐藏导入模块列表。这里没有指定任何隐藏导入模块。
    hookspath=[],          # 钩子文件的路径列表,用于处理特定模块的导入问题。这里为空列表,表示没有额外的钩子路径。
    hooksconfig={},        # 钩子配置选项的字典,用于定制导入钩子的行为。这里为空字典,表示没有特定的钩子配置。
    runtime_hooks=[],      # 运行时钩子列表,这些钩子在运行时修改导入行为。这里为空列表,表示没有运行时钩子。
    excludes=[],           # 被排除在打包之外的模块列表。这里为空列表,表示没有需要排除的模块。
    noarchive=False,       # 控制是否将 Python 源代码打包到归档中。这里设置为 False,表示允许将 Python 源代码打包到归档中。
    optimize=0,            # 优化级别,控制生成的字节码的优化等级。这里设置为 0,表示没有进行任何优化。
)

当我们需要使用根目录中的networkedit.icoconfig文件夹中的DS-302.prfDS-401.prf文件连接到我编译的exe中时,我们可以像下面这样配置

a = Analysis(
    ['objdictedit.py'],    # 主程序或脚本文件的列表。这里只有一个文件 'objdictedit.py'。
    pathex=[],             # 指定 Python 解释器的搜索路径。这里为空列表,表示使用默认的搜索路径。
    binaries=[],           # 包含在打包文件中的二进制文件列表。这里没有指定任何二进制文件。
    datas=[
	('networkedit.ico', '.'),
	('config/DS-302.prf', 'config'),
	('config/DS-401.prf', 'config'),
	],
    hiddenimports=[],      # 需要明确指定的隐藏导入模块列表。这里没有指定任何隐藏导入模块。
    hookspath=[],          # 钩子文件的路径列表,用于处理特定模块的导入问题。这里为空列表,表示没有额外的钩子路径。
    hooksconfig={},        # 钩子配置选项的字典,用于定制导入钩子的行为。这里为空字典,表示没有特定的钩子配置。
    runtime_hooks=[],      # 运行时钩子列表,这些钩子在运行时修改导入行为。这里为空列表,表示没有运行时钩子。
    excludes=[],           # 被排除在打包之外的模块列表。这里为空列表,表示没有需要排除的模块。
    noarchive=False,       # 控制是否将 Python 源代码打包到归档中。这里设置为 False,表示允许将 Python 源代码打包到归档中。
    optimize=0,            # 优化级别,控制生成的字节码的优化等级。这里设置为 0,表示没有进行任何优化。
)

通过上面的配置,然后在命令行运行pyinstaller your_script.spec,就可以把你的项目连接上这些数据资源了!

结尾再附一个pyinstaller命令的详细链接(个人感觉写的挺好的)https://jdreamheart.com/wiki/dailyrecord/install/py_wxpython_pyInstaller.html

标签:文件,这里,钩子,列表,导入,为空,pyinstall,spec
From: https://www.cnblogs.com/xddisme/p/18361427

相关文章

  • 【问题解决】PageOffice打开word文档报错:Office运行时错误,部分系统文件可能丢失或已损
    打开wps,右上角配置和修复工具取消勾选,确定再打开,重新勾选,确定,退出重启电脑,验证。--PS:本人自测成功,有些人的机器安装有MicrosoftOffice,取消之后(不需要重新勾选)就可以了;本人机器只安装了WPS适合这种操作。......
  • 实现同时接收文件与实体类,java springboot maven
    首先,需要有一个Post接口,有一个实体类方法需要返回什么,直接修改void即可实体类需要接收什么,直接改User即可 @PostMapping(value="/post_interface")publicvoidpostInterface(@RequestParam("file")MultipartFilefile,@RequestParamMap<String,Object>user){......
  • Scp 使用密码拷贝文件
    在Linux系统中,scp是一个非常好用的命令,可以用于在本地和远程计算机之间复制文件和目录。使用scp命令复制文件时,你可以使用两种方法来提供密码: 1.直接拷贝(手动输入密码)下面是使用scp命令复制文件并手动输入密码的方法:scpusername@remote_host:/path/to/remote/file/pa......
  • 根据银灿IS903的CD-ROM盘符打开光盘文件索引数据库Index-Your-Files-2024年8月15日
    根据银灿IS903的CD-ROM盘符打开光盘文件索引数据库Index-Your-Files-2024年8月15日   =====段落分隔符=====Config-7z-SFX-Builder-v2.5.0.5;!@Install@!UTF-8!InstallPath="C:\\APP"OverwriteMode="1+8"RunProgram="nowait:C:\\APP\\IYF\\Delphi7\\Proj......
  • 三步搞清楚华为路由器配置文件保存原理
    要想搞清楚华为路由器临时配置和永久性配置,其实这个问题非常简单。所谓设备flash可以看成被精简后的Linux操作系统,如果是有Linux基础的朋友会更加容易理解。在用户模式下甚至连基础命令都和Linux一样,这样看起来非常容。在Linux中各类服务配置要想永久生效,都必须修改配置文件......
  • 代码审计(文件读取、下载、写入)
    一、梦想CMS1.4后台任意文件读取漏洞复现国家信息安全漏洞共享平台(cnvd.org.cn)通过找关键词file_get_contents1、进入后台观察url,是通传参地址来进行访问的,猜测通过文件读取;2、分析读取的原理通过搜索文件读取的函数找一下实现的位置发现有path参数的,判断是否是可控传......
  • 易优Load资源文件加载-Eyoucms标签手册
    【基础用法】名称:load功能:资源文件加载,比如:css/js语法:{eyou:loadhref='/static/js/common.js'ver='on'/}参数:file=''资源文件路径href=''远程资源文件URLver=''开启版本号自动刷新浏览器缓存底层字段:无【更多示例】-----------------------------......
  • 易优Assign模板文件中定义变量-Eyoucms标签手册
    【基础用法】名称:assign功能:模板文件中定义变量,可在其他标签里使用该变量语法:{eyou:assignname='typeid'value='5'/}文件:无参数:name=''变量名value=''赋给变量名的值底层字段:无【更多示例】-------------------------------示例1------------------------------......
  • 获取文件流的文件描述符 printf("The file descriptor is: %d\n"
    intmain(intargc,constchar*argv[]){DIR*dir=opendir("./");//当前目录if(NULL==dir){fprintf(stderr,"opendirerror\n");return1;}while(1){[www.laipuhuo.com](https://www.laipuhuo.com)structdirent*info=readdir(dir);......
  • C盘里的缓存文件,C盘里的缓存文件怎么清理
    C盘中的缓存文件是系统或应用程序在运行过程中产生的临时数据,这些文件会随着时间的推移逐渐积累,占用大量的磁盘空间。为了释放C盘空间,提高系统运行效率,可以采取以下几种方法来清理C盘中的缓存文件:一、手动清理1.清理系统缓存文件:按下“Win+R”键,打开运行窗口,输入%temp%,点击......