广告
返回顶部
首页 > 资讯 > 后端开发 > Python >PyInstaller 打包 pytho
  • 802
分享到

PyInstaller 打包 pytho

PyInstallerpytho 2023-01-30 23:01:08 802人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

  主题是使用PyInstaller 打包python时遇到一些问题以及解决方案,其中将要打包的程序是用Tensorflow做的LSTM算法,这里不会涉及这个算法详解。 本地环境:window 10 服务器环境 windows2008

 

主题是使用PyInstaller 打包python时遇到一些问题以及解决方案,其中将要打包的程序是用Tensorflow做的LSTM算法,这里不会涉及这个算法详解。

本地环境:window 10 服务器环境 windows2008

原文地址:原文

主要运行时版本依赖

Python 3.6  

PyInstaller  3.5

tensorflow 1.4   (过程中更新为1.7,原因下详)

jieba 0.39

Wordcloud 1.5 

安装与使用PyInstaller  

在pychaim下可以直接打开下方Teminal 窗口 执行指令  

pip install PyInstaller

打包python程序

PyInstaller -F XXXX.py

-F 是把所有的相关程序都打包成单个exe运行文件。

执行过程中会在当前项目根目录下 新建2个文件夹 build ,dist   与一个文件  XXXX.spec

build文件夹是在打包过程中临时存放所有中间文件的地方

dist是打包完成后的exe保存位置

XXXX.spec 与 打包时XXXX.py 是同名文件,自动生成了一份描述性文件,用来告诉pyinstaller 如何打包这个py程序。

所以一旦自动生成了一个spec文件 后续可以根据需求自行修改 spec文件,然后执行

PyInstaller -F XXXX.spec

 

遇到的问题

一,AttributeError: module ‘enum’ has no attribute ‘IntFlag

这个问题有文献1可知,是由于tensorflow 1.4 版本依赖了 enum34 这个库导致的错误,所以我升级为1.7 卸载掉了enum34库

二,tuple index out of range

这个异常是由文献2可知,pyinstaller当前版本不支持 python3.6 所以需要从GitHub那边下载develop版本替换掉本地的版本。

三,No such file or directory: 'c:xxxx\jieba\dict.txt'

由于接入了jieba库,因为该库里面用到了一些默认的资源文件如  dict.txt   idx.txt  等,

这个疑问参考issue 文献3 ,但是解决方案治标不治本,另外还有很多资源文件都无法加载 如:wordcloud 中就加载了默认的 stopword 停用词字典。

因为在pyinstaller 打包后的exe 运行时会在   C:\Users\Administrator\AppData\Local\Temp 新增了一个临时文件夹如“_MEIxxxxxx” 所有py代码都会在临时存放在这里,

所以很多第三方库中如果使用了 __file__  如下示例:(wordcloud源码

FILE = os.path.dirname(__file__)

FONT_PATH = os.environ.get('FONT_PATH', os.path.join(FILE, 'DroidSansMono.ttf'))
STOPWORDS = set(map(str.strip, open(os.path.join(FILE, 'stopwords')).readlines()))

jieba库也有类似加载方式。

会导致运行时__file__ 指向了上面说的临时文件夹“_MEIxxxxxx”,所以就会报错,说找不到该文件,无法打开。

一劳永逸的办法是修改 spec 文件.

先把一些需要加载的资源按照第三方库默认的文件结构放在 static(这个名字随你定) 文件夹内 ,如下图

 

然后根据官方文档参考文献4,修改spec的datas 节点

datas接收一个元组数组 [(x1,y2),(x2,y2)]  x1 是指需要打包的资源文件位置,可以是文件夹名称(我这里是static),单一文件,或者 带有通配符 * 的多个文件。   y1,是指需要输出到临时文件夹内的相对地址。这里我用了 点符号,代表临时文件夹本身。

这样需要的资源文件就包括进去了,也能正常读取了。

有其他办法是修改源码的,其实是很不优雅的。

 

四,No module named 'tensorflow.contrib'

这个异常在测试环境是没有的,只有打包之后运行才出现,原因是tensorflow.contrib 这个库是懒加载的,所以打包程序没有包括进去,只有在运行时才发现少了。

这里还是可以通过修改spec文件来隐性导入,就是上图里面的

 hiddenimports=['tensorflow.contrib'],

 

结尾:引用请注明出处与作者

 

参考文献: 

  1. https://blog.csdn.net/loovelj/article/details/79557456
  2. Https://blog.csdn.net/qq_35614920/article/details/77096238
  3. https://github.com/fxsjy/jieba/issues/35
  4. https://pythonhosted.org/PyInstaller/spec-files.html#spec-file-operation

--结束END--

本文标题: PyInstaller 打包 pytho

本文链接: https://www.lsjlt.com/news/180604.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PyInstaller 打包 pytho
      主题是使用PyInstaller 打包python时遇到一些问题以及解决方案,其中将要打包的程序是用tensorflow做的LSTM算法,这里不会涉及这个算法详解。 本地环境:window 10 服务器环境 windows2008 ...
    99+
    2023-01-30
    PyInstaller pytho
  • Pyinstaller打包
    上一篇的后续,使用pyinstaller打包的一些注意事项。 文件目录   打包目标 生成一个资源可以替换、可以发布到别人电脑上的文件。 一些小小的注意事项 路径问题 因为是一个涉及到资源处理和文件操作的程序,所以资源文件和操作对象...
    99+
    2023-09-02
    python
  • python打包之pyinstaller(打包成exe)
    一、安装 pyinstaller 直接pip在线安装 pip install pyinstaller 二、指令介绍 常用指令 -h,–help查看该模块的帮助信息-F,-onefile产生单个的可执行...
    99+
    2023-09-07
    python opencv
  • Pyinstaller打包怎么用
    这篇文章将为大家详细讲解有关Pyinstaller打包怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、安装pyinstallerPyInstaller是一个用来将Python程序打包成一个独立可执...
    99+
    2023-06-20
  • PyInstaller的常用打包命令
    学习了pyqt后,设计了界面,并且需要打包为exe程序。 每次打包时,都要查好久资料,故此记录一下常用的命令。 PyInstaller 是一个 Python 应用程序打包工具,它可以将 Python...
    99+
    2023-09-22
    qt python 开发语言
  • 如何使用pyinstaller打包Python
    小编给大家分享一下如何使用pyinstaller打包Python,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、单个文件打包1.1 简单打包例如现在有一个mai...
    99+
    2023-06-15
  • pyinstaller打包openpyxl和pandas包,报错ModuleNotFoundError openpyxl
    用pyinstaller打包带有openpyxl模块的项目时,打包完成后,运行程序出现报错, ModuleNotFoundError: No module named openpyxl.cell.w...
    99+
    2023-09-01
    python
  • 使用pyinstaller打包python PyQt5程序
    目录准备工具准备源代码准备打包参数说明针对PyQt应用的改进目前的小问题解决办法再次打包代码仓库说明当你有打包你的python应用的需求以后,你可能会像搜索引擎寻求帮助,你或许曾经搜...
    99+
    2022-11-12
  • 使用PyInstaller 打包配置文件
    目录PyInstaller打包配置文件(一) 仅打包python文件(二) 打包python文件与资源文件pyinstaller打包后,配置文件无法正常读取问题P...
    99+
    2022-11-13
  • 使用pyinstaller打包多个py文
    1. 安装pyinstaller。 pip install pyinstaller  !!!!64位win7上打包后始终不能用,提示找不到ldap模块,换了32位win7就好了。!!!!(代码中涉及ldap模块) 2. pyinsta...
    99+
    2023-01-31
    多个 pyinstaller py
  • Python ---- pyInstaller 的常用打包命令
    1. 简介 PyInstaller是一个第三方库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装...
    99+
    2023-09-06
    python linux windows
  • Python学习笔记-打包发布Pytho
    Python模块、扩展和应用程序可以按以下几种形式进行打包和发布: python setup.py获取帮助的方式    python setup.py --help    python setup.py --help-commands 所有...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • python pyinstaller打包的方法是什么
    要使用PyInstaller打包Python脚本,可以按照以下步骤进行操作:1. 安装PyInstaller:在命令行中运行`pip...
    99+
    2023-09-23
    python pyinstaller
  • pyinstaller打包遇到的问题解决
    1、ModuleNotFoundError: No module named ‘scipy.spatial.transform_rotaion_groups’...
    99+
    2023-02-17
    pyinstaller打包
  • Python pyinstaller打包exe最完整教程
    目录 1 简介 2 安装 3 原理和打包效果 3.1 原理概述 3.2 搜索模块 3.3 打包效果概述 3.4 打包成单个文件夹 优点 缺点 3.5 打包成单个exe 优点 缺点 4 打包 4.1 基本语法 4.2 参数总览 位置参数 可选...
    99+
    2023-09-30
    python 开发语言
  • 教你使用pyinstaller打包Python教程
    目录一、单个文件打包1.1 简单打包1.2 带图标打包二、项目多文件打包三、打包后文件太大一、单个文件打包 1.1 简单打包 例如现在有一个main.py文件内容如下 impor...
    99+
    2022-11-12
  • 总结Pyinstaller打包的高级用法
    一、安装pyinstaller PyInstaller是一个用来将Python程序打包成一个独立可执行文件的第三方包。 因是第三方包,所以需要安装一下: pip install ...
    99+
    2022-11-12
  • 如何使用PyInstaller打包Python程序
    本篇文章为大家展示了如何使用PyInstaller打包Python程序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。使用PyInstaller打包Python程序PyInstaller介绍:&nbs...
    99+
    2023-06-02
  • 【Python】项目打包:如何使用PyInstaller打包python程序(exe)
    文章目录 前言一、PyInstaller二、安装PyInstaller库三、PyInstaller的使用1.命令行+参数2.py文件+参数2.1配置文件config.py2.2打包文件pyTe...
    99+
    2023-09-02
    python 开发语言 qt5
  • pyinstaller打包django项目的实现步骤
    安装pyinstaller pip install pyinstaller 制作项目的.spec文件   进入django项目所在路径,运行 pyi-makes...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作