使用Pyinstaller打包步骤如下

1. 安装pyinstaller

pip install pyinstaller

查看安装的版本

pyinstaller --version

2. 给脚本加密

pyinstaller myscript.py (主程序文件)

PyInstaller会在您的脚本中找到所有import语句。 它找到导入的模块并在其中查找import语句,依此类推,直到它具有脚本可能使用的完整模块列表。

Pyinstaller能够识别大部分常见的python包,包括GUI库,但是也有些包无法识别或者导入的时候监测不到。这个时候你需要:在spec文件里面指定需要导入的包。

一般操作方法:

你可以先尝试直接运行上面的命令,会自动生成spec文件,默认是放在当前文件夹下,如果成功则不需要修改。如果PyInstaller自动生成的spec文件并不能满足我们的需求。

会报错提示程序依赖我们本地的一些数据文件,这个时候就需要我们自己去编辑spec文件来添加数据文件。

3. 常见spec文件参数

block_cipher = None
a = Analysis(['minimal.py'],
pathex=['/Developer/PItests/minimal'],
binaries=None,
datas=None,
hiddenimports=[],
hookspath=None,
runtime_hooks=None,
excludes=None,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,... )
coll = COLLECT(...)

spec文件中主要包含4个class: Analysis, PYZ, EXE和COLLECT.

Analysis以py文件为输入,它会分析py文件的依赖模块,并生成相应的信息

PYZ是一个.pyz的压缩包,包含程序运行需要的所有依赖

EXE根据上面两项生成

COLLECT生成其他部分的输出文件夹,COLLECT也可以没有

4. 常见错误解决方式

ImportError: DLL load failed: 找不到指定的模块

在.spec文件中:

a = Analysis(...
binaries=[('/path/to/some.dll', '.'), ... ],
...)

ModuleNotFoundError: No module named 'xxxxxx'

在.spec文件中:

a = Analysis(...
hiddenimports=['some.module', ... ],
...)

如果我们需要添加没有打包的数据信息,可以将上访的data改为

a.datas +=[(test.ico','D:\\Test\\python\\test.ico','DATA')]

修改后再执行spec文件,即生效添加内容。

pyinstaller test.spec

参考来源:

  1. http://legendtkl.com/2015/11/06/pyinstaller/
  2. https://pyinstaller.readthedocs.io/en/stable/spec-files.html#using-spec-files
  3. https://www.cnblogs.com/yemeng/p/6253097.html

pyinstaller打包自己的python程序的更多相关文章

  1. pyinstaller打包第一个wxPython程序HelloWorld

    pyinstaller 打包hello 7Mb ================= www.pyinstaller.org pip install pypiwin32 pip install pyin ...

  2. 最干净的pyinstaller打包成exe应用程序方法

    在anaconda环境下进行pyinstaller打包后,程序非常大,70行代码打包后有280MB,这是因为会将conda环境携带的库都打包进去导致的.为了获得更纯净的包环境,我们需要安装纯pytho ...

  3. pyinstaller打包shotgun有关的程序

    By 鬼猫猫 http://www.cnblogs.com/muyr/ 背景 使用pyinstaller打包跟shotgun有关的程序后,在自己电脑上运行都OK,但是编译好的exe在其他人的电脑上运行 ...

  4. pyinstaller打包好的.exe程序在别的电脑上运行出错

    打开.exe提示: Failed to execute script... 查看命令行错误提示为: 总的来说呢,就是有的版本pyqt5库对系统变量的加载存在bug,具体原因只有官方才能解释了,咱也没法 ...

  5. pyinstaller 打包.exe文件记录遇到的问题

    用pyinstaller打包py2.7的程序有时会出现不匹配的错误,在python的idle下运行没有问题,打包之后却会报一些错误,所以打包的话还是尽量用py3.5版本,而且用 -F 将程序打包成一个 ...

  6. 解决Windows Server 2012 R2 Datacenter云服务器无法运行opencv python程序的问题

    写了个基于opencv的python程序,pyinstaller 32位机打包后在win7/win10 32/64正常运行,在Windows Server 2012 R2 Datacenter云服务器 ...

  7. [python学习笔记] pyinstaller打包pyqt5程序无法运行

    问题 pyinstaller打包的pyqt5程序在部分电脑上会失败.用户截图提示下边错误日志 无法定位程序输入点 ucrtbase.terminate 于动态链接库 api-ms-win-crt-ru ...

  8. PyInstaller 打包 python程序成exe

    pychaim下PyInstaller 打包 python程序 主题是使用PyInstaller 打包python时遇到一些问题以及解决方案,其中将要打包的程序是用tensorflow做的LSTM算法 ...

  9. “failed to excute script xxx” PyInstaller 打包python程序为exe文件过程错误

    在使用PyInstaller打包python程序,打包命令为: pyinstaller -F -w -i manage.ico yourpyfile.py 顺便说一下几个参数的作用 -F:是直接生成单 ...

随机推荐

  1. CUDA 纹理内存

    原文链接 1.概述 纹理存储器中的数据以一维.二维或者三维数组的形式存储在显存中,可以通过缓存加速访问,并且可以声明大小比常数存储器要大的多. 在kernel中访问纹理存储器的操作称为纹理拾取(tex ...

  2. 第45章 DCMI—OV2640摄像头—零死角玩转STM32-F429系列

    第45章     DCMI—OV2640摄像头 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com ...

  3. python面试,日更

    l1 = [11, 2, 3, 22, 2, 4, 11, 3] 去重并保持原来顺序 # 集合方法 l2 = list(set(l1)) l2.sort(key=l1.index) # 按照l1索引排 ...

  4. IE 兼容模式 设置 Meta Compatible 和 Iframe 子页面的关系

    背景 因为历史原因,之前很多的系统都会是 顶级页面+Iframe来加载子级页面的这种模式构件系统,而且系统都只能运行在IE6或者IE 高版本兼容模式下(IE 7模式). 随着现在的审美原来越高,脚本能 ...

  5. 修改第三方库内容,carsh提示"image not found"

    在图示位置把提示的东西加上即可 参考: iOS app with framework crashed on device, dyld: Library not loaded, Xcode 6 Beta ...

  6. 关于var和ES6中的let,const的理解

    var的作用就不多说了,下面说说var的缺点: 1.var可以重复声明 var a = 1; var a = 5; console.log(a); //5 不会报错 在像这些这些严谨的语言来说,一般是 ...

  7. 模拟ie9的placeholder

    ie9 的input框没有placeholder属性 啧啧啧~~~ 所以就用span标签来模拟一下 先判断浏览器类型 if(navigator.useAgent.indexOf("MSIE ...

  8. c++标准之IO库

    1.面向对象的标准库 2.多种IO标准库工具 istream,提供输入操作 ostream,提供输出操作 cin:读入标准输入的istream对象.全局对象extern std::istream ci ...

  9. mybatis的坑——不报错,就是不能committing,数据存不进数据库

    测试的时候会报空指针异常,在项目跑的时候会停止执行程序,不会出现异常. 经过一星期的排查与测试,最终找到错误,把mapper文件的映射属性名写错了. property属性名要与接收类的属性名保持一致. ...

  10. .Net Core爬虫爬取妹子网图片

    现在网上大把的Python的爬虫教程,很少看见有用C#写的,正好新出的.Net Core可以很方便的部署到Linux上,就用妹子图做示范写个小爬虫 在C#下有个很方便的类库 HtmlAgilityPa ...