用pyinstaller已经打包并能正常运行的exe在dist文件中
用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. 解决方案:跨电脑运行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参数:
pyinstaller --add-data "model.tflite;." --add-data "labels.txt;." your_script.py
4. 路径修正技巧
在代码中访问资源文件时,应使用以下方式获取正确路径:
import sys
import os
def resource_path(relative_path):
try:
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
# 使用示例
model_path = resource_path("model.tflite")
5. 推荐打包方式
使用单文件模式打包:
pyinstaller --onefile --add-data "model.tflite;." your_script.py
注意事项:
[*]目标电脑的Windows版本不宜过旧(建议Win10以上)
[*]关闭杀毒软件(可能误报拦截)
[*]若使用深度学习模型,确保目标电脑有足够内存
[*]日志中的WARNING通常不影响运行,属于MediaPipe框架的常规提示
如果仍有问题,建议重新打包时添加--debug all参数查看详细运行日志。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 player-none 于 2025-5-15 18:38 编辑
在打包的时候加上 -F(大小写!)这样就可以单独把 dist/ 里的 exe 搞来用了
such as
pyinstaller -F xxx.py
这样就不需要一大堆 build spec……的依赖 另外最好压缩
页:
[1]