python打包,图片资源打包

1,安装pyinstaller

pip install pyinstaller

*,新配置的python环境,出现了两个报错

第一个通过修改配置文件解决

Invoke-Expression : 无法将参数绑定到参数“Command”,因为该参数为空字符串。 所在位置 C:\Users\xxx\miniconda3\shell\condabin\Cond_invoke-expression : 所在位置 行:1 字符: 254 + ... eng\ana_day day happy的博客-优快云博客

第二个通过找到对应目录,将python.exe的名称解决

Unable to create process using 'C:\ProgramData\Anaconda3\python.exe

2,使用pyinstaller xxx.py打包,默认生成的执行文件是一个目录

也可以使用 pyinstaller -F xxx.py 打包,可以生成单个的exe文件

3,打包后发现图片资源没有打包进去

需要修改 *.spec,将图片的路径设置进去datas=[("resources","resources")],

然后在使用 pyinstaller xxx.spec的方式进行打包

4,程序中加载图片要使用新的方法,保证打包后可以正常读取到图片

img = cv2.imread(get_resource_path('resources/imori.jpg'))

以下是需要增加的方法

import sys,os

def get_resource_path(relative_path):
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, relative_path)
return os.path.join(os.path.abspath("."), relative_path)

Pyinstaller打包exe附带图片的方法 - 码农教程

### 使用 PyInstaller 打包含图像资源Python 应用程序 为了将包含图像资源Python 应用程序打包为单个 `.exe` 文件,可以按照如下方式操作: #### 安装 PyInstaller 如果尚未安装 `PyInstaller`,可以通过 pip 工具轻松完成安装。打开命令提示符并输入以下命令: ```bash pip install pyinstaller ``` #### 准备项目结构 确保项目的目录结构合理安排,使得脚本能够正确访问所需的图像资源。通常的做法是在同一目录下放置主脚本和资源文件夹。 #### 修改代码以适应路径变化 当应用被打包成单一可执行文件时,在运行期间获取当前工作目录的方法会有所不同。因此建议修改读取资源文件的部分代码,采用相对路径或绝对路径的方式来定位这些静态文件的位置[^2]。 对于 Windows 平台上的 Python 程序来说,使用 PyInstaller 不仅能处理纯文本源码还可以很好地支持多媒体类型的附加文件如图片等非代码资产。要让最终生成的应用知道去哪里找那些额外的数据文件,则需告知 PyInstaller 这些信息。 #### 添加数据文件到构建配置中 为了让 PyInstaller 将指定的图像资源一同加入到最后的结果里去,可以在调用它的时候加上参数 `--add-data` 来指明哪些外部文件应该被包含进来。具体语法取决于操作系统;对于 Windows 用户而言,格式应类似于下面的样子: ```bash pyinstaller --onefile --windowed --add-data "images:images" your_script.py ``` 这里 `"images"` 表示源文件夹名(即存放所有要用作图标、背景图之类的子文件夹名称),冒号后面跟着的是目标位置的名字——这告诉 PyInstaller 把原始资料复制过去之后放在哪里[^3]。 注意:上述命令中的 `your_script.py` 需替换为你自己的入口脚本名字,并且实际路径可能依据个人情况有所调整。 #### 处理不同平台间的差异 由于各系统的分隔符不一致,所以在跨平台开发过程中要注意区分好 Linux/macOS 下面用斜杠 `/` 和 Windows 上反斜杠 `\` 的区别。为了避免潜在的问题发生,最好利用 os.path 或 pathlib 模块来动态计算正确的路径字符串[^4]。 #### 示例代码片段展示如何加载本地图片作为界面元素的一部分 假设有一个 Tkinter GUI 应用想要显示一张 logo.png 图片位于 images 子文件夹内,那么可以在导入必要的模块后按此模式编写相应部分逻辑: ```python import tkinter as tk from PIL import Image, ImageTk import os def resource_path(relative_path): """ Get absolute path to resource, works for dev and for PyInstaller """ try: # PyInstaller creates a temp folder and stores path in _MEIPASS base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path) root = tk.Tk() img = Image.open(resource_path('images/logo.png')) photo = ImageTk.PhotoImage(img) label = tk.Label(root, image=photo) label.pack() root.mainloop() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值