Pyinstaller如何将资源文件一起打包至exe中

基本原理:Pyinstaller 可以将资源文件一起bundle到exe中,当exe在运行时,会生成一个临时文件夹,程序可通过sys._MEIPASS访问临时文件夹中的资源

官方说明:https://pythonhosted.org/PyInstaller/spec-files.html#spec-file-operation

测试案例功能描述,访问资源文件夹res/a.txt,并打印其内容。实现方法如下:

源码如下,比较简单,resource_path方法说明了如何使用sys._MEIPASS变量来访问临时文件夹中的资源

#coding:utf-8
import sys
import os

#生成资源文件目录访问路径
def resource_path(relative_path):
    if getattr(sys, ‘frozen‘, False): #是否Bundle Resource
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

#访问res文件夹下a.txt的内容
filename = resource_path(os.path.join("res","a.txt"))
print(filename)
with open(filename) as f:
    lines = f.readlines()
    print(lines)
    f.close()

结下来介绍如何生成exe

首先需要生成spec文件,pyi-makespec -F test.py

编辑spec文件,在datas选项中说明需要将哪些文件加入exe,在零时文件夹中命名成什么

以下图为例,意思将test.py当前目录下的res目录(及其目录中的文件)加入目标exe中,在运行时放在零时文件的根目录下,名称为res

生成EXE文件,pyinstaller -F test.spec

运行生成的EXE,可以看到资源生成的临时文件夹路径

原文地址:https://www.cnblogs.com/darcymei/p/9397173.html

时间: 2024-08-13 12:03:50

Pyinstaller如何将资源文件一起打包至exe中的相关文章

Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)

转载地址:http://blog.csdn.net/xiaanming/article/details/9257853 最近有一个需要,我们公司做了一个apk客户端,然后其他的公司可以根据自己的需要来替换里面的资源图片,文字等一些资源文件问题,我本来想这个简单,用两个工程直接替换里面的资源文件就行,老大说,这样子不好,如果要改需要改两个客户端,而且还麻烦,叫我将所有的Activity打成Jar包的形式,这样子我们改了里面的内容就直接发布Jar包出去,其他公司直接下载Jar来使用,这样子他们自己公

Python3.4 .py文件如何打包成.exe文件

一.安装pywin32 1.下载pywin32-218.win-amd64-py3.4.exe (根据操作系统的位数下载) 2.运行安装 3.如果安装提示如下错误: 打开注册表 "regedit" 1.从"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python"找到注册表,导出 2.编辑其内容,用"HKEY_CURRENT_USER\Software" 替换全部的 "HKEY_LOCAL_MACHI

编译自己的资源文件编辑器(reseditor.exe) qgwjvYTk

如果说互联网解决信息不对称,移动互联网解决沟通不及时,那么区块链解决的是信任难建立和价值难共享.比特币3.0时代已经到来,3.0时代意味着"随处可用的区块链".如何实现随处可用?吴萌野老师认为,一是基础链,二是中间件.有关基础链的技术问题和解决方案,吴萌野老师给出的答案是从计算层的改进方向:一是采用更快速的智能合约容器和运行时,并优化共识节点规模.谈到中间件,他希望通过中间件搭建连接互联网云服务和区块链智能合约的中间桥梁,推动区块链应用生态规模化落地. 吴萌野1999年毕业于是清华大学

vs 如何将dll打包到exe中

方法如下:首先需要安装NuGet 然后安装Fody.Costura 重新启动vs 编译项目即可 虽然根目录下还生成了dll但是你的程序已经可以脱离dll运行了,其实是将你的dll打入了exe中你可以看到exe的体积变大. 详细步骤参考:http://www.cnblogs.com/lonelyxmas/p/5568876.html(转自博客园) 安装包下载:https://www.nuget.org/packages/Fody/

Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤

资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下) 1.编写rc脚本文本 用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在资源文件中的名称->类型->实际文件名称. 例如:要将文件名 demo.Dll的文件打包成一个资源文件,首先 新建一个文本文档,输入内容 mydemoDll RCDATA demo.DLL mydemoDll 和 RCDATA 你可以随便写,这个是为了在使用资源时定义的名称和类型你也可以写成:a

控件注册 - 利用资源文件将dll、ocx打包进exe文件(C#版)

原文:控件注册 - 利用资源文件将dll.ocx打包进exe文件(C#版) 很多时候自定义或者引用控件都需要注册才能使用,但是如何使要注册的dll或ocx打包到exe中,使用户下载以后看到的只是一个exe,点击直接运行呢?就像很多安全控件,如支付宝的aliedit.exe那样. 现在介绍一种使用资源文件,将dll.ocx打包进exe,点击直接注册的例子: 首先,新建一个工程RegisterFile.  新建文件夹Resource,里面添加需要注册的ocx或dll.这里我添加的是dsoframer

8、Maven打包时resources文件夹下的资源文件没有打进去的解决措施

场景:使用maven install进行打包时,发现resources文件夹下的资源文件没有打进去,war中展示的还是修改前的原文件,解决措施如下: 1.在pom.xml文件中,在<build>打包标签中增加resources标签配置,指定maven将resources资源文件进行打包: 原文地址:https://www.cnblogs.com/wf2010517141/p/10451182.html

[Java基础] 深入jar包:从jar包中读取资源文件

转载: http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看下面的代码: //源代码1: package edu.hxraid; import java.io.*; public class Resource { public void getRe

java 从jar包中读取资源文件

在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码:Java代码 [java] view plaincopy //源代码1: package edu.hxraid; import java.io.*; public class Resource { public  void getResource() throws IOException{ File fil