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.ico和config文件夹中的DS-302.prf,DS-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文件引用资源文件的更多相关文章
- 如何在使用eclipse的情况下,清理android项目中的冗余class文件和资源文件以及冗余图片
在我们迭代项目的过程中,经常会启用某些功能,或者修改某些界面的问题,那么问题来了,这样很容易出现大量的冗余.java文件,冗余资源文件,一些冗余的界面文件等.那么问题既然出现了,那么如何去解决呢,这就 ...
- angular4.0 配置打包路径以及资源文件404问题
一.配置打包路径 配置打包路径,便于提交到SVN,不用每次都复制粘贴 在.angular-cli.json文件中修改"outDir"的路径,打包后的项目将发布到路径下 二.解决打包 ...
- 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 ...
- TypeScript 引用资源文件后提示找不到的异常处理
在tsx中引用图片,在文件文本编辑器中提示错误引用: typescript无法识别非代码文件(js是可以的).如果需要在ts中识别此文件资源,可以先声明文件类型. 新建一个ts文件,比如global. ...
- WPF使用路径(URI)引用资源文件
Uri uri = new Uri("pack://application:,,,/程序集名称;component/Resources/bj.png", UriKind.Absol ...
- 解决webpack vue 项目打包生成的文件,资源文件均404问题
最近在使用webpack + vue做个人娱乐项目时,发现npm run build后,css js img静态资源文件均找不到路径,报404错误...网上查找了一堆解决办法,总结如下 一.首先修改c ...
- python文件引用其他文件中的变量
问题: 然后再另一个文件中引用该变量 报错:Cannot find reference 'User_Agent' in '__init__.py' less... (Ctrl+F1) 正确写法: fr ...
- js文件引用js文件
我的问题是: a.jsp b.js c.js a.jsp 需要引用 b.js 里面的内容 <head> <script type="text/javascript& ...
- maven资源文件的相关配置
构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件. src/main/java和src/test/java 这两个目录中的所有*.java文件会 ...
- 【JAVA】使用Eclipse依赖生成jar包时,避免最外层同时生成资源文件的配置。
使用Eclipse依赖生成jar包时,如果做配置,生成的jar包文件会全部生成在外面,这并不是我们需要的,下面我们一起来修改下配置,使生成的jar包符合我们的需求吧. 1.如果不做任何配置生成的jar ...
随机推荐
- 全国产T3+FPGA的SPI与I2C通信方案分享
近年来,随着中国新基建.中国制造2025规划的持续推进,单ARM处理器越来越难胜任工业现场的功能要求,特别是如今能源电力.工业控制.智慧医疗等行业,往往更需要ARM + FPGA架构的处理器平台来实现 ...
- 面试官:JVM调优,主要针对是哪一个区域?JVM内存结构是怎样的?
作为一个Java程序员,在日常的开发中,不必像C/C++程序员那样,为每一个内存的分配而操心,JVM会替我们进行自动的内存分配和回收,方便我们开发.但是一旦发生内存泄漏或者内存溢出,如果对Java内存 ...
- Excel 更改数据同步更新到Mysql数据库
刚上班,领导给我提出一个需求,想要每天更新Mysql数据库中的原有商品订单状态,添加新的商品订单状态.因为公司目前的数据库只能添加数据,不能更改数据,想要更改原有的数据,只能将原有的数据清空,再导入新 ...
- win10 VMware 关闭虚拟机失败导致再打开时显示连接不上虚拟机的一种解决方法
VMware关闭虚拟机失败,强行关闭后,再次打开VMware,打开虚拟机时提示连接不上虚拟机,没有访问权限. 先试了退出后,用管理员权限打开,无果. 然后从网上查资料,cmd->services ...
- Spring(XML方式)简单入门
环境准备 maven jdk Spring Eclipse 项目创建 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0 ...
- Java-JDBC的对象DriverManager,Connection,ResultSet,PreparedStatement,工具类:JDBCUTILS,JDBC控制事务
1. 概念 Java DataBase Connectivity Java 数据库连接 Java语言操作数据库 JDBC本质:其实是官方(sun)公司的一套操作所有关系型数据库的规则,即接口.各个数据 ...
- WSL2连接USB设备(以USRP B210为例)
使用WSL2时,发现其无法直接识别到宿主机上插入的USB设备. 可利用USPIPD-WIN项目进行连接. 以下以USRP B210设备连接为例,展示连接过程: 安装USBIPD-WIN 项目 参考连接 ...
- 这才是 PHP 高性能框架 Workerman 的立命之本
大家好,我是码农先森. 在这个大家都崇尚高性能的时代,程序员的谈笑间句句都离不开高性能,仿佛嘴角边不挂着「高性能」三个字都会显得自己很 Low,其中众所皆知的 Nginx 就是高性能的代表.有些朋友可 ...
- 基于Drone实现CI/CD【0到1架构系列】
CI/CD是持续性集交和持续性部署,简单来讲就是自动化构建和自动化部署.目前有很多集成方案,也有很多组装方案,只要能实现自动化构建出制品,再自动部署到生产环境就行. 目前很多源代码都集成了CI/CD功 ...
- 6、SpringMVC之视图
注意:本文环境搭建请参考5.2节 6.1.视图概述 视图的作用是渲染数据,将模型Model中的数据展示给用户: SpringMVC视图的种类很多,默认有转发视图和重定向视图: SpringMVC中的视 ...