PyInstaller可以把Python应用程序及其所有依赖项捆绑到一个包中。用户可以在不安装Python解释器或任何模块的情况下运行打包的应用程序。PyInstaller支持Python 2.7和Python 3.3+,并支持诸如numpy,PyQt,Django,wxPython等主要Python软件包。
PyInstaller针对Windows,Mac OS X和Linux进行了测试。但是,它不是一个交叉编译器:要制作一个Windows应用程序,你需要在Windows中运行PyInstaller;在Linux中运行Linux应用程序等。PyInstaller已成功用于AIX,Solaris和FreeBSD,但未经过测试。

官方文档:https://pyinstaller.readthedocs.io/en/stable/

===============================================

0x01 安装

pip install pyinstaller

或者安装github上的develop版

pip install https://github.com/pyinstaller/pyinstaller/tarball/develop

0x02 使用方法

打包一个python文件(.py或者.pyw等后缀都没问题)

pyinstaller -F -w pcat.pyw

使用-F会在当前目录下的dist文件夹生成一个独立的exe文件,

而使用-D(默认选项)则会在当前目录下的dist文件夹生成一个文件夹存放exe以及所有依赖文件。

当py文件有窗体时使用-w,在windows下不会显示控制台,-w在*NIX系统里会被忽略。

0x03 先生成spec文件

如果不使用--specpath指定路径,会在当前目录下生成一个spec文件,pyinstaller是根据spec文件来创建exe文件。

这个spec文件也是可以先生成的:

pyi-makespec [options] pcat.spec

*其中的[options]代表各种参数

这里生成spec文件后,你可以对其进行修改后,再来安装

pyinstaller [options] pcat.spec

0x04 一些常用参数

-d #debug模式,可以得到运行时的跟踪
-p DIR #可以增加pyinstaller搜索模块的路径,多个路径以:分隔。默认site-packages目录下都是可以被识别的
--add-data <SRC;DEST or SRC:DEST> #增加非二进制文件到目录下,windows以;分隔而且得用双引号包含,而*NIX以:分隔
--add-binary <SRC;DEST or SRC:DEST> #增加二进制文件到目录下
-i <FILE.ico or FILE.exe,ID or FILE.icns> #给打包的文件添加图标
--version-file FILE #windows里可把版本信息注射到exe里

其中--add-data、-i 等以后有空补充详细点

而--version-file需要的版本信息文件是需要格式的,

切换到python安装目录下的\Lib\site-packages\PyInstaller\utils\cliutils下,有一个grab_version.py文件

python grab_version.py C:\Windows\System32\cmd.exe

会生成一个file_version_info.txt,里面版本信息的格式可以参考。

PyInstaller安装使用方法的更多相关文章

  1. 打包python文件为exe文件(PyInstaller工具使用方法)

    最近做的新浪微博爬虫程序,打算打包成.exe软件以方便使用,网上找到一个很好的打包工具pyinstaller,这里记录一下打包的方法. 一.下载pyinstaller 我使用的版本为PyInstall ...

  2. Python PyInstaller安装和使用教程

    安装 PyInstalle Python 默认并不包含 PyInstaller 模块,因此需要自行安装 PyInstaller 模块. 安装 PyInstaller 模块与安装其他 Python 模块 ...

  3. 安装Birt方法

    安装BIRT 方法: 博客地址:http://www.mamicode.com/info-detail-850588.html 注意:在 Install new Software 中输入地址:http ...

  4. linux php安装扩展方法 查找配置文件

    如何在linux中查看nginx.apache.php.mysql配置文件路径了,如果你接收一个别人配置过的环境,但没留下相关文档.这时该怎么判断找到正确的加载文件路径了.可以通过以下来判断 1.判断 ...

  5. node安装插件方法

    node安装插件方法有几种,这里列出常用的两种方法: 方法1: 进入要安装插件的目录,直接用 npm 软件安装包安装,如(安装express): cd /project npm install -g ...

  6. windows server 2008见安装IIS方法(解决)

    windows server 2008见安装IIS方法(解决) 刚开始有点蒙,后来才知道原来如此.! . 右键点击[我的电脑]--[管理]--[字符]--[加入角色]--仅落后win7像.啊! 版权声 ...

  7. elasticsearch+kibana+metricbeat安装部署方法

    elasticsearch+kibana+metricbeat安装部署方法 本文是elasticsearch + kibana + metricbeat,没有涉及到logstash部分.通过beat收 ...

  8. RHEL6下获取安装包(RPM)而不安装的方法

    RHEL6下获取安装包(RPM)而不安装的方法 有时候我们只能在某个机器上网获得RPM安装包,如何将RPM包在不能上网的内网机器安装,就需要能将安装包下载到本地而不安装,然后再把这些包复制到内网机器, ...

  9. 哈希长度扩展攻击(Hash Length Extension Attack)利用工具hexpand安装使用方法

    去年我写了一篇哈希长度扩展攻击的简介以及HashPump安装使用方法,本来已经足够了,但HashPump还不是很完善的哈希长度扩展攻击,HashPump在使用的时候必须提供original_data, ...

随机推荐

  1. 解决端口冲突问题(查询端口占用进程并kill)

    1. 查看端口占用 在windows命令行窗口下执行: netstat -aon|findstr "8080" TCP 127.0.0.1:80 0.0.0.0:0 LISTENI ...

  2. Java开发笔记(二十五)方法的输入参数

    前面通过main方法介绍了方法的定义形式,对于方法的输入参数来说,还有几个值得注意的地方,接下来分别对输入参数的几种用法进行阐述.一个方法可以有输入参数,也可以没有输入参数,倘若无需输入参数,则方法定 ...

  3. 测试一波SpringBoot的HTTP吞吐量

    本来,其实就我个人而言现在很少去弄性能这一块的阵地了,主要在做设计与架构,不过前几天刚刚关注公众号的罗哥给我抛了关于性能方面的问题. 一个问题立马引起了我的兴趣,太久没弄性能方面的事情了,所以在隔天有 ...

  4. ecstore 安装后提示require function does not exist in....

    解决: 安装好后,修改config.php里的TMP_DIR,指向网站目录下的data目录(用绝对路径) // define('TMP_DIR', '/data/www/data/tmp/');  先 ...

  5. 请不要在广州.NET俱乐部群里谈郑智话题,谢谢!

    收到私聊说代码无国界,但是程序员是有国界的,程序员也有关心国家大事的权力!   我是极度赞同“代码无国界,但是程序员是有国界的,”我也极度赞同程序员也要爱国. 因为我们新兴县六祖镇叶氏家族就有四位爱国 ...

  6. SpringBoot 配置 跨域支持

    跨域资源共享(CORS,请求协议,请求地址,请求端口三者必须相同才是同一服务器,否则都要进行跨域操作)标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站有权限访问哪些资源.另外,规范要求,对那 ...

  7. 通过Erlang构建TCP服务应用案例(最原始方式)

    文章来源:公众号-智能化IT系统. 案例介绍 本文介绍的案例是TCP网络服务器的构建,用最原始的方式(非OTP).其功能很简单,通过网络TCP接口接收数据,按照指定的格式解析,并把数据存储至Mongo ...

  8. linux(centos7) 常用命令和快捷键 持续验证更新中...

    1.文件和目录cd 进入目录示例:cd /home 进入home目录    cd..    返回上一级目录cd../..    返回上两级目录cd -    返回上次所在目录cd ~    返回根目录 ...

  9. 06-Nodejs介绍

    06-Nodejs介绍 打开Nodejs英文网:https://nodejs.org/en/ 中文网:http://nodejs.cn/ 我们会发现这样一句话: 翻译成中文如下: Node.js 是一 ...

  10. MySQL InnoDB下关于MVCC的一个问题的分析

      这个是网友++C++在群里问的一个关于MySQL的问题,本篇文章实验测试环境为MySQL 5.6.20,事务隔离级别为REPEATABLE-READ ,在演示问题前,我们先准备测试环境.准备一个测 ...