当前位置: 首页 > news >正文

pyinstaller使用详细

目录

    • 常用命令
    • spec文件配置
    • 报错

常用命令

pyinstaller -D xxx.py //打包生成目录(director)pyinstaller -F xxx.py//打包生成单个exe文件pyinstaller xxx.spec //根据现有的spec文件进行打包

运行以上命令之一后会生成build、dist文件夹以及xxx.spec文件,可以通过修改.spec文件进行打包配置。

spec文件配置

打包主要修改的是Analysis()的内容,Analysis配置如下。

a = Analysis(['xx.py'],pathex=[],binaries=[],datas=[],hiddenimports=[],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False,
)

第一个[]中的内容为要打包的出口文件,即main()所在文件,pyinstaller会通过这个文件进行引包,这里只需要添加执行入口文件

pathex包含自建库的搜索路径,对应命令行-p参数。

datas包含程序资源文件,如图片、网页等,需要按元组进行配置。(‘资源当前所在路径’,‘打包后所在路径’)
例如:datas=[(‘jieba\dict.txt’,‘.\jieba’)] 表示将当前目录的jieba\dict.txt放入打包目录的jieba文件夹下。

hiddenimport能够导入程序未能直接导入的库,若出现no module ‘xxx’时,将xxx加入hiddenimport列表中。

报错

  1. metadata找不到
    在.spec中配置data,关键代码如下:
 from PyInstaller.utils.hooks import copy_metadata
datas=[('jieba\dict.txt','.\jieba')]datas+=copy_metadata('tqdm') + \
copy_metadata('regex') + \
copy_metadata("requests") +   \
copy_metadata("packaging") +\
copy_metadata("filelock") + \
copy_metadata("numpy") + \
copy_metadata("tokenizers")
  1. 运行时报错find_and_load
    报错代码:
 File "datasets\load.py", line 58, in <module>File "<frozen importlib._bootstrap>", line 1007, in _find_and_loadFile "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 680, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_moduleFile "datasets\packaged_modules\__init__.py", line 31, in <module>File "inspect.py", line 1024, in getsourceFile "inspect.py", line 1006, in getsourcelinesFile "inspect.py", line 835, in findsource
OSError: could not get source code
[16480] Failed to execute script 'test' due to unhandled exception!

将报错所指的包复制到dist/xxx目录下就行。
上面的报错指示为:

"datasets\packaged_modules\__init__.py", line 31, in <module>

将第三方库datasets/复制到dist/xxx/下。

http://www.lryc.cn/news/4935.html

相关文章:

  • java -数据结构,List相关基础知识,ArrayList的基本使用,泛型的简单、包装类介绍
  • RabbitMQ学习总结(10)—— RabbitMQ如何保证消息的可靠性
  • 购物车案例【版本为vue3】
  • Multisim14 安装包及安装教程
  • Java实现简单的图书管理系统源码+论文
  • 前端调试2
  • AlphaFold 2 处理蛋白质折叠问题
  • 问卷调查会遇到哪些问题?怎么解决?
  • 量化选股——基于动量因子的行业风格轮动策略(第1部分—因子测算)
  • 工作常用git命令
  • test3
  • 领证啦,立抵3600,软考证书到手后还有很多作用
  • 响应式布局之viewport-超级简单
  • 分布式计算考试资料
  • Java修饰符和运算符,超详细整理,适合新手入门
  • 软件功能测试包含了哪些测试项目?功能测试报告收费标准
  • Netty 学习笔记——概念篇
  • 元宇宙开始告别以资本为主导的野蛮生长,新的竞争格局和态势将形成
  • MySQL 5:MySQL视图
  • 中国干细胞医疗行业市场规模及未来发展趋势
  • SpringBoot日志文件
  • R语言读取Excel表格数据并绘制多系列柱状图、条形图
  • 【操作系统】操作系统IO技术底层机制和ZeroCopy
  • 给你的边框加点渐变
  • 【目标检测】如何使用Yolov8
  • NVM安装、配置环境、简单使用
  • 【SPSS】数据预处理基础教程(附案例实战)
  • 某饿了么APP最新版逆向分析(二):加密参数初探
  • 程序的编译与链接(预处理详解)+百度面试笔试题+《高质量C/C++编程指南》笔试题
  • 全解析 ESM 模块语法,出去还是进来都由你说了算