直接使用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. 对比flash与ajax哪个好?

    Ajax的优势: (1)可搜索性 普通的文本网页会更有利于SEO.文本内容是搜索引擎容易检索的,而繁琐的swf字节码却是搜索引擎不愿触及的.虽然Google等一些大型的搜索引擎可以检索SWF内部的内容 ...

  2. oracle 删除重复数据

    1.找出重复数据 select count(1),uuid  from ts.test group by uuid having count(1)>1 order by 1 desc ;---找 ...

  3. docker-compose运行Rails

    1.新建空目录,名字可以叫Rails 2.新建Dockerfile并添加如下内容 FROM ruby:2.5 RUN apt-get update -qq && apt-get ins ...

  4. AOP实现拦截对象以及获取切入目标方法和注解

    AOP实现拦截对象以及获取切入目标方法和注解 一.JoinPoint是什么? AspectJ使用org.aspectj.lang.JoinPoint接口表示目标类连接点对象,如果是环绕增强时,使用 o ...

  5. cpu高占用,线程堆栈,jstack,pstack,jmap, kill -3 pid,java(weblogic,tomcat)

    1 ps -mp pid -o THREAD,tid,time 2 printf "%x\n" tid 3 jstack pid |grep tid -A 30

  6. day77

    昨日回顾:  批量插入数据:   -queryset的方法:bulk_create(对象列表,数字(一次插入多少))  分页器:   from django.core.paginator import ...

  7. Deep Photo的TensorFlow版本

    Prisma这个应用,你可能很熟悉.这是一个能将不同的绘画风格,迁移到照片中,形成不同艺术风格的图片. 2017年4月,美国康奈尔大学和Adobe的一个研究团队在arvix上通过论文“Deep Pho ...

  8. 03-Centos7安装部署Mirrorgate-踩坑记录

    FAQ 1.没有安装bzip2 解决方法 yum -y install bzip2 > phantomjs-prebuilt@2.1.16 install /root/test/mirrorga ...

  9. C3P0配置实战

    C3P0: 一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等. 默认情况下(即没有配置连接池的 ...

  10. jQuery对底部导航进行跳转并高亮显示

    这两天弄一个mui的底部菜单,有点费时了,尝试了用vue写,纯js写,还有根据mui的写,还是有些问题和麻烦.直到看了网上的一些例子,才想明白,之前一直是一种点击触发事件才高亮的思维去做,这个虽然可以 ...