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文件引用资源文件的更多相关文章

  1. 如何在使用eclipse的情况下,清理android项目中的冗余class文件和资源文件以及冗余图片

    在我们迭代项目的过程中,经常会启用某些功能,或者修改某些界面的问题,那么问题来了,这样很容易出现大量的冗余.java文件,冗余资源文件,一些冗余的界面文件等.那么问题既然出现了,那么如何去解决呢,这就 ...

  2. angular4.0 配置打包路径以及资源文件404问题

    一.配置打包路径 配置打包路径,便于提交到SVN,不用每次都复制粘贴 在.angular-cli.json文件中修改"outDir"的路径,打包后的项目将发布到路径下 二.解决打包 ...

  3. springbooot2 thymeleaf 配置以及加载资源文件。Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration)

    最近在学习springbooot2 和 thymeleaf 程序文件 application.properties文件配置: #thymeleaf spring.thymeleaf.prefix=cl ...

  4. TypeScript 引用资源文件后提示找不到的异常处理

    在tsx中引用图片,在文件文本编辑器中提示错误引用: typescript无法识别非代码文件(js是可以的).如果需要在ts中识别此文件资源,可以先声明文件类型. 新建一个ts文件,比如global. ...

  5. WPF使用路径(URI)引用资源文件

    Uri uri = new Uri("pack://application:,,,/程序集名称;component/Resources/bj.png", UriKind.Absol ...

  6. 解决webpack vue 项目打包生成的文件,资源文件均404问题

    最近在使用webpack + vue做个人娱乐项目时,发现npm run build后,css js img静态资源文件均找不到路径,报404错误...网上查找了一堆解决办法,总结如下 一.首先修改c ...

  7. python文件引用其他文件中的变量

    问题: 然后再另一个文件中引用该变量 报错:Cannot find reference 'User_Agent' in '__init__.py' less... (Ctrl+F1) 正确写法: fr ...

  8. js文件引用js文件

    我的问题是: a.jsp   b.js  c.js a.jsp  需要引用 b.js 里面的内容 <head> <script type="text/javascript& ...

  9. maven资源文件的相关配置

    构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件. src/main/java和src/test/java  这两个目录中的所有*.java文件会 ...

  10. 【JAVA】使用Eclipse依赖生成jar包时,避免最外层同时生成资源文件的配置。

    使用Eclipse依赖生成jar包时,如果做配置,生成的jar包文件会全部生成在外面,这并不是我们需要的,下面我们一起来修改下配置,使生成的jar包符合我们的需求吧. 1.如果不做任何配置生成的jar ...

随机推荐

  1. uCos 学习:0-有关概念

    先说一下UCOSIII:Micrium在2009年推出了UCOSIII,相对于之前的UCOSII版本,在性能上有了进一步的提升,主要是支持时间片轮调度,极短的关中断事件等. 可剥夺多任务管理: 什么是 ...

  2. 洛谷P1432

    水一道绿题,整体思路和八数码很像,哈希表存解,然后常规模拟即可 #include<iostream> #include<utility> #include<queue&g ...

  3. 解决方案 | Get-AppxPackage : 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动

    前几天由于需要卸载一些win10自带应用,导致onenote2016无法启动(根本原因:当时可能remove-appxpackage导致某些微软原生应用出现问题),同时今天使用power shell出 ...

  4. 题解:CF1985E Secret Box

    设长宽高分别为 \(a,b,c\). 由题意可轻松的得到以下求方案数公式. \((x-a+1)(y-b+1)(z-c+1)\) 然后根据这个公式模拟即可. AC Code

  5. C++如何在main函数开始之前(或结束之后)执行一段逻辑?

    1. 问题 2. 考察的要点 3. 解决策略 3.1. 方案一:使用GCC的拓展功能 3.2. 方案二:使用全局变量 3.3. 方案三:atexit 4. Demo测试 4.1. 测试代码 4.2. ...

  6. 使用threejs实现3D卡片菜单

    成品效果: 用到的技术:vue2.three.js.gsap.js template <template> <div id="box" class="c ...

  7. 支付宝小程序的级联选择器,对接简单操作,Cascader 级联选择器element_ui

    首先,对于element_ui 的动接,由于需要数据格式是 但是支付宝提的接口返回的数据是另一种格式,并且支付宝的三级联动接口是先只有一个列表,点击列表项再发现请求,生成另外一个下拉选择, 需要这个三 ...

  8. 在Centos7中使用一键脚本安装Oracle11g

    在Centos7中使用一键脚本安装Oracle11g 1. 环境准备 1.1 系统版本:Centos7.9(2009) 1.2 Oracle版本:Oracle 11g 11.2.0.4 1.3 网络需 ...

  9. oracle数据库状态查询

    oracle数据库状态查询(表空间,表空间利用率,是否自动扩展,IOPS,MBPS,数据库总大小) 排除了('SYSAUX', 'USERS', 'SYSTEM','UNDOTBS1') 结果示例 - ...

  10. SQL实战从在职到离职(1) 如何处理连续查询

    书接上回,最近离职在家了实在无聊,除了看看考研的书,打打dnf手游,也就只能写写代码,结果昨晚挂在某平台的一个技术出售有人下单了,大概业务是需要帮忙辅导一些面试需要用到的SQL. 回想了下,在该平台接 ...