直接使用Python开发的软件时有许多不方便的地方,如需要安装特定的Python环境,需要安装依赖库。为了便于部署,需要将Python源代码编译成可执行文件,编译后的可执行文件就能脱离python环境运行了。

安装

将py编译成可执行文件需要使用PyInstaller,需要注意,从百度搜索到的下载链接来自SourceForge,而PyInstaller的开发似乎已经转到Github上去了,因此从SourceForge上下载的版本不是最新的。

目前最新的PyInstaller版本是2.1,最方便的安装方式是通过pip使用如下命令安装:

pip install pyinstall

当然,也可以通过下载源代码编译方式安装:

python setup.py install

安装完成后,使用如下命令可以确认版本号:

pyinstaller --version

如果显示Error: Python 2.6+ on Windows support need pywin32,则说明当前没有安装pywin32,安装后即可正常运行PyInstaller。
安装pywin32时需要注意,pywin32的版本和本机Python位数和版本必须相同。

简单使用

最简单的使用方式是运行pyinstaller myscript.py来生成可执行文件,其中myscript.py是需要编译成可执行文件的源代码。
通过这种方式生成的可执行文件默认位于当前文件夹的dist目录下的myscript目录中,该目录下除了有exe文件外,还有若干个其他文件,这些文件都是运行时必须的。
编译完成后可以删除build文件夹,该文件夹存放的是编译过程中的生成的临时文件

如果希望编译出的exe文件不依赖其他文件,可以添加-F选项:

pyinstaller -F myscript.py

编译出的单独的exe文件在启动时速度上略慢于编译成文件夹方式。因为在执行单独的exe时会将资源先释放到临时文件夹中再执行。

常用选项

–distpath=path_to_executable

指定生成的可执行文件存放的目录,默认存放在dist目录下

–workpath=path_to_work_files

指定编译中临时文件存放的目录,默认存放在build目录下

–clean

清理编译时的临时文件

-F, –onefile

生成单独的exe文件而不是文件夹

-d, –debug

编译为debug模式,有助于运行中获取日志信息

–version-file=version_text_file

为exe文件添加版本信息,版本信息可以通过运行pyi-grab_version加上要获取版本信息的exe文件的路径来生成,生成后的版本信息文件可以按需求修改并作为--version-file的参数添加到要生成的exe文件中去

i <FILE.ico>, -i <FILE.exe,ID>, –icon=<FILE.ico>, –icon=<FILE.exe,ID>

为exe文件添加图标,可以指定图标路径或者从已存在的exe文件中抽取特定的ID的图标作为要生成的exe文件的图标

另外,还可以通过spec文件来生成可执行文件,运行pyi-makespec options script [script ...]可以生成spec文件,修改spec文件后执行:

pyinstaller specfile

或者

pyi-build specfile

就可以生成可执行文件了。

spec文件方式生成可执行文件提供了更多的定制选项,包括自定义python库的位置,要打包的其他文件路径等等。

Windows下PyInstaller的使用教程的更多相关文章

  1. Windows 下安装 Oracle 12c 教程

    原文 Windows 下安装 Oracle 12c 教程 申明:本文原作者:Jmq   本文给大家带来的是 Oracle 12C 的安装教程. 1.准备 1.1 下载 Oracle 12c 安装程序 ...

  2. 图解Windows下 GIT GUI 使用教程

    https://jingyan.baidu.com/article/19020a0a7ae6af529c284248.html 本篇经验将和大家介绍Windows下 GIT GUI 使用教程,希望对大 ...

  3. Windows下安装MySQL详细教程

    Windows下安装MySQL详细教程 1.安装包下载  2.安装教程 (1)配置环境变量 (2)生成data文件 (3)安装MySQL (4)启动服务 (5)登录MySQL (6)查询用户密码 (7 ...

  4. windows 下 pyinstaller distutils not included with latest virtualenv (16.4.0)

    起因 因为windows下python3.7.2内置venv虚拟环境下pyinstaller错误问题,切换virtualenv但是发现最新版本又有其他问题 - -! ModuleNotFoundErr ...

  5. windows下安装dirmap详细教程

    今天安装一下dirmap,纯小白非常详细的安装过程 1.先去下载dirmap 下载地址:https://github.com/H4ckForJob/dirmap 点这个绿色的code,然后再点下面这个 ...

  6. windows下Gulp入门详细教程 &&gulp安装失败的原因(红色)

    以下教程亲自实践可行: 另外添加一个Gulp自动编译.压缩.更新.测试的教程链接:https://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8 ...

  7. windows下 jdk1.7安装教程图解

    java编程的初学者在开始编码前都会遇到一个难题,那就是jdk1.7环境变量配置怎么操作,怎么安装,针对这个难题,小编特地为大家整理相关教程,不了解的朋友可以前往查看使用. 软件说明 虽然现在jdk出 ...

  8. windows下ACE安装使用教程(转)

    ACE简介:ACE是一个跨平台的用于并发通信的C++框架.它提供了丰富的C++封装器和框架组件.使用ACE,开发者可以开发出高性能,实时的通信服务和应用.ACE利用进程间通信,事件分离,动态链接和并发 ...

  9. windows下RocketMQ下载安装教程

    一.下载(原文链接:http://www.studyshare.cn/software/details/1183/0 ) 1.官网下载:下载地址   2.百度网盘下载:下载地址 提取码:0g5a ja ...

随机推荐

  1. Shell学习心得(二):传递参数、运算符

    1.传递参数 可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 向脚本传递三个参数, ...

  2. Kubernetes1.91(K8s)安装部署过程(二)--证书kubeconfig文件创建

    前提: 安装kubelet工具,参考:https://jimmysong.io/kubernetes-handbook/practice/kubectl-installation.html 如遇*** ...

  3. JAVA框架 Spring 和Mybatis整合(传统dao)

    一:我们使用spring处理service,mybaits处理dao层. 二:导入jar包 pom.xml文件内容: <?xml version="1.0" encoding ...

  4. jq中each的中断

    最近在做项目中,遇到jq的each方法中的回调函数里面的break不生效,即通过 jquery 的循环方法进行数组遍历,但是当不符合条件时,怎么跳出当前循环,我们经常会习惯JS中的break和cont ...

  5. P1821 [USACO07FEB]银牛派对Silver Cow Party

    题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ...

  6. Java面试题,Java三大特性之一——多态的理解

    首先我们知道Java是一门面向对象的语言 面向对象三大特性,封装.继承.多态. 封装.继承.多态 ↓ 无论是学习路线,还是众人的口语习惯,都是按照这个这样进行排序,这是有原因的.因为封装好了才能继承, ...

  7. ajax入门简述

    ajax 全称为 “Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),是一种创建交互式网页应用的网页开发技术,本质上是一个浏览器端的技术,就是 ...

  8. Selenium 爬取全国水质周报Word

    很久没写爬虫了 ,昨天有个学姐说需要爬取水质的一些数据,给了个网站( http://xxfb.hydroinfo.gov.cn/ssIndex.html?type=2&tdsourcetag= ...

  9. HTTPUTILS

    maven依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId&g ...

  10. [Deep-Learning-with-Python]计算机视觉中的深度学习

    包括: 理解卷积神经网络 使用数据增强缓解过拟合 使用预训练卷积网络做特征提取 微调预训练网络模型 可视化卷积网络学习结果以及分类决策过程 介绍卷积神经网络,convnets,深度学习在计算机视觉方面 ...