鱼C论坛

 找回密码
 立即注册
查看: 318|回复: 3

用pyinstaller已经打包并能正常运行的exe在dist文件中

[复制链接]
发表于 2025-5-15 11:35:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用pyinstaller已经打包并能正常运行的exe在dist文件中,想在另一个电脑上也可以正常运行使用要怎么操作?

直接复制dist、build、.spec文件夹和文件到别的盘就用不了,怎么处理

附上运行成功后显示的信息

C:\Users\Administrator>C:\Users\Administrator\Downloads\dist\22\22.exe
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
W0000 00:00:1747280080.200678   50876 inference_feedback_manager.cc:114] Feedback manager requires a model with a single signature inference. Disabling support for feedback tensors.
W0000 00:00:1747280080.225902   46468 inference_feedback_manager.cc:114] Feedback manager requires a model with a single signature inference. Disabling support for feedback tensors.
W0000 00:00:1747280081.073374   51788 landmark_projection_calculator.cc:186] Using NORM_RECT without IMAGE_DIMENSIONS is only supported for the square ROI. Provide IMAGE_DIMENSIONS or use PROJECTION_MATRIX.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-5-15 11:36:27 | 显示全部楼层
解决方案:跨电脑运行PyInstaller打包的exe

问题原因:
直接复制dist/build/.spec文件夹到其他电脑无法运行,通常是因为:
  • 缺少必要的系统依赖(如VC++运行库)
  • 未正确打包外部文件(如模型、图片等)
  • 路径问题(代码中使用了绝对路径)


正确操作步骤:

1. 精简文件传输
只需复制dist文件夹内的内容到目标电脑即可,build/.spec是编译过程文件无需复制。

2. 检查系统依赖
目标电脑需安装:
  • Visual C++ Redistributable(2015+版本)
  • 若涉及GPU运算需安装对应驱动

下载地址:https://aka.ms/vs/16/release/vc_redist.x64.exe

3. 处理外部资源文件
若程序依赖模型/配置文件(根据报错推测你用了MediaPipe模型),打包时需用--add-data参数:

  1. pyinstaller --add-data "model.tflite;." --add-data "labels.txt;." your_script.py
复制代码


4. 路径修正技巧
在代码中访问资源文件时,应使用以下方式获取正确路径:

  1. import sys
  2. import os

  3. def resource_path(relative_path):
  4.     try:
  5.         base_path = sys._MEIPASS
  6.     except Exception:
  7.         base_path = os.path.abspath(".")
  8.     return os.path.join(base_path, relative_path)

  9. # 使用示例
  10. model_path = resource_path("model.tflite")
复制代码


5. 推荐打包方式
使用单文件模式打包:

  1. pyinstaller --onefile --add-data "model.tflite;." your_script.py
复制代码


注意事项:
  • 目标电脑的Windows版本不宜过旧(建议Win10以上)
  • 关闭杀毒软件(可能误报拦截)
  • 若使用深度学习模型,确保目标电脑有足够内存
  • 日志中的WARNING通常不影响运行,属于MediaPipe框架的常规提示


如果仍有问题,建议重新打包时添加--debug all参数查看详细运行日志。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-5-15 18:37:16 | 显示全部楼层
本帖最后由 player-none 于 2025-5-15 18:38 编辑

在打包的时候加上 -F(大小写!)这样就可以单独把 dist/ 里的 exe 搞来用了

such as

  1. pyinstaller -F xxx.py
复制代码


这样就不需要一大堆 build spec……的依赖
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-5-15 20:04:29 | 显示全部楼层
另外最好压缩
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-20 01:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表