1. 安装

本人系统是:Ubuntu16.04,python3.7。

安装的pyinstaller==3.5, UPX==upx-3.95-amd64_linux.tar.xz。不安装对应版本的pyinstaller和UPX会一直打包不成功(亲测)。

首先需要安装pyinstaller:

pip install pyinstaller==3.5

如果不安装UPX的话,会出现打包成exe失败:upx is not availible.

之后需要下载UPX(Linux为例):

https://github.com/upx/upx/releases​github.com

解压二进制:

tar -Jxf upx-3.95-amd64_linux.tar.xz

为了方便使用移动 upx 到系统变量目录,如果不愿意使用 root 的话可以将 upx 目录添加到环境变量:

sudo cp upx-3.95-amd64_linux/upx /usr/bin

如果是windows版本的话,步骤如下:

  • 到官网https://upx.github.io下载UPX,根据自己系统位数,选择相应版本就行。然后解压缩,得到upx.exe这个文件。
  • 找到当时安装Python位置的文件夹,将upx.exe拷贝到scripts文件夹中,比如我的是D:Anaconda3Scripts。
D:Anaconda3Scripts
  • 然后再运行pyinstaller,就会提示UPX is available。

2. PyInstaller 支持的常用选项

options的详情可参考官方帮助文档:

Using PyInstaller​pyinstaller.readthedocs.io

  • -F,-onefile,dist中产生单个的可执行文件。eg:pyinstaller -F demo.py
  • -D,--onedir,产生一个目录(包含多个文件)作为可执行程序 。eg:pyinstaller -D demo.py
  • -a,--ascii,不包含 Unicode 字符集支持
  • -d,--debug,产生 debug 版本的可执行文件
  • -w,--windowed,--noconsolc,指定程序运行时不显示命令行窗口(仅对 Windows 有效)。eg:pyinstaller -w demo.py
  • -c,--nowindowed,--console,指定使用命令行窗口运行程序(仅对 Windows 有效)eg:pyinstaller -c demo.py
  • -o DIR,--out=DIR,指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
  • -p DIR,--path=DIR,设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径eg:pyinstaller -p E:pythonLibsite-packages demo.py
  • -n NAME,--name=NAME,指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字。

2.1 创建一个 app 目录,在该目录下创建一个 入口app.py 文件

# 进入该app目录内,执行以下语法
pyinstaller -F app.py

当生成完成后,将会在此 app 目录下看到多了一个 dist 目录,并在该目录下看到有一个 app.exe 文件,这就是使用 PyInstaller 工具生成的 exe 程序。

在命令行窗口中进入 dist 目录下,在该目录执行 app.exe ,将会看到该程序执行结果。

注:若程序没有可视化界面,不能双击执行程序

2.2 创建一个 app 目录,在该目录下创建一个入口app.py文件

# 进入该app目录内,执行以下语法
pyinstaller -D app.py

执行上面命令,将看到详细的生成过程。当生成完成后,将会在 app 目录下看到多了一个 dist 目录,并在该目录下看到有一个 app 子目录,在该子目录下包含了大量 .dll 文件和 .pyz 文件,它们都是 app.exe 程序的支撑文件。在命令行窗口中运行该 app.exe 程序,同样可以看到与前一个 app.exe 程序相同的输出结果。

2.3 高级用法

当有特殊需求,比如打包图片资源文件时,就必须用到它的高级用法。

首先得了解spec文件,简而言之,spec文件就是一份告诉pyinstaller如何打包的配置文件。

可以通过pyi-makespec demo.py来生成demo.spec文件。其内容如下:

# -*- mode: python -*-block_cipher = Noneresources = (("inspurer.db", "."), ("dlib_face_recognition_resnet_model_v1.dat", "."),("shape_predictor_68_face_landmarks.dat", "."), ("close_logcat.png", "."), ("open_logcat.png", "."), ("finish_register.png", "."), ("new_register.png", "."), ("start_punchcard.png", "."), ("end_puncard.png", "."), ("index.png", "."))a = Analysis(['workAttendanceSystem.py'],pathex=['C:UserslenovoDesktoptestpython'],binaries=[],datas=resources,hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)
exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='workAttendanceSystem',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=True )
coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,name='workAttendanceSystem')

对于上面这个文件,需要注意两点:

  • 除了resources配置是我添加修改之外,其余全是自动生成,这个配置是用来添加资源文件的。
  • pathex是工程的根目录。

生成并配置好spec文件后,我们可以通过pyinstaller demo.spec来执行打包任务。

linux添加py自启动脚本_PyInstaller详解:将.py文件打包成exe文件相关推荐

  1. linux添加开机自启动脚本示例详解

    linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加 如果不想将脚本粘来粘去,或创建链接什么的, 则: step1. 先修改好脚本,使 ...

  2. rcs开机启动mysql_linux添加开机自启动脚本示例详解-阿里云开发者社区

    linux添加开机自启动脚本示例详解 double2li 2017-04-14 1652浏览量 简介: linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的;一.在/etc/r ...

  3. python - .py文件打包成.exe文件, 发送给别人

    python文件打包成.exe文件有两种方式 参考: pyinstaller打包 Nuitka打包 环境 环境 描述 OS Windows10 64位 python 3.7 pycharm 2019 ...

  4. pyinstaller将py文件打包成EXE文件(保姆级教程)

    一.PyInstaller 库的安装 1.一般安装步骤: pip install pyinstaller一般的安装方法是在cmd命令提示符环境下输入: window+r 运行cmd 输入以下内容切换到 ...

  5. 利用cx_Freeze将py文件打包成exe文件(图文全解)

    python是一个非常非常优秀的编程语言,它最大的特性就是跨平台.python程序几乎可以在所有常见的平台中进行使用,而且大部分无需修改任何代码!不过,python也有一点点小缺憾(这个是由于自身本质 ...

  6. 利用cx_Freeze将py文件打包成exe文件(图文全解)(转帖)

    python是一个非常非常优秀的编程语言,它最大的特性就是跨平台.python程序几乎可以在所有常见的平台中进行使用,而且大部分无需修改任何代码!不过,python也有一点点小缺憾(这个是由于自身本质 ...

  7. Pycharm下将py文件打包成exe文件

    1. 在PyCharm下安装PyInstaller 1. 首先,打开自己要发布的工程   2. 点击底部的[Terminal]打开终端,中输入命令pip install pyinstaller后回车, ...

  8. [Python]项目打包:5步将py文件打包成exe文件

    1.下载pyinstaller并解压(可以去官网下载最新版): http://nchc.dl.sourceforge.net/project/pyinstaller/2.0/pyinstaller-2 ...

  9. python—auto-py-to-exe—.py文件打包成.exe文件最全最详细(用不同的类别做教程)

    目录 1.打包工具介绍 安装库 2.打包方法 3.例程 (1)只打包py文件,不含有其他资源文件 使用: (2)打包py文件和资源文件(包括文件夹) 1.打包工具介绍 对于打包工具有很多,比如:pyi ...

最新文章

  1. 浅谈python+requests实现接口自动化
  2. Unix环境高级编程学习笔记(一)
  3. Web推流,Webrtc网页推流rtmp在教学直播录制中应用
  4. 为什么应该用record来定义DTO(续)
  5. odoo self.ensure_one()
  6. 计算机网络,IP地址概念及IP地址详细分类介绍、及子网掩码详细介绍MAC地址介绍、网络位,主机位、网络地址、广播地址。
  7. 菜鸟的学习之路(10) — LinkedList类
  8. HTTP上传大文件的注意点
  9. 日志打印longging模块(控制台和文件同时输出)
  10. 我对javascript面向对象编程的理解---------继承
  11. 用别人的血汗去染自己的红顶子,谁愿意去干谁干,我是不干
  12. 关于裁员几点看法及建议
  13. 机器人学习-matlab四足机器人控制仿真
  14. 计算理论基础-1-FA有穷自动机与Pumping_Lemma泵定理
  15. allergro音乐术语什么意思_音乐术语大全
  16. [ 系统安全篇 ] 拉黑IP - 火绒安全软件设置IP黑名单 windows使用系统防火墙功能设置IP黑名单
  17. 英语之境(chapter two)
  18. 第二章 2.1 机器视觉——图像《2022年斯坦福AI指数报告》中文全解读
  19. 一拖再拖,刁肥宅个人主页终上线!
  20. 飞行管理数学建模论文

热门文章

  1. 开发人员拟在澳洲建立一座价值5000万美元的BCH科技园
  2. Java消息服务JMS详解
  3. 从构建分布式秒杀系统聊聊线程池
  4. 基于sqlcmd命令行工具管理SQL server
  5. 作为一枚第二天上班的小小.net程序员(技术宅的那种)很迷茫哦,第一个随笔
  6. 关于CCRANDOM_0_1
  7. [Voice communications] 看得到的音频流
  8. linux定时运行命令脚本——crontab
  9. 音视频互动开发平台之AnyChat SDK
  10. iOS开发 nil Nil NULL NSNull 的使用