安装pyinstaller

打开cmd窗口,输入pip install pyinstaller,命令行输出successfully表示成功。

生成exe文件

一、单个py文件

在py文件目录下,打开cmd窗口,输入pyinstall -F XXX.py,执行成功的话,会在当前目录生成一个dist文件夹,XXX.exe文件在此文件夹下。

如果是图形窗口,不想要控制台出现的话,可以pyinstall -F XXX.py --noconsole

添加版本信息

安装好pyinstaller后,我们会得到两个辅助工具,pyi-grab_version和pyi-set_version。

1. 使用pyi-grab_version创建版本信息模板文件,首先找到一个有版本信息的XXX.exe工具,在此目录下打开cmd窗口,输入pyi-grab_version XXX.exe,执行成功后,会在此目录下获得一个file_version_info.txt文件,这个就是我们要的文件版本信息模板文件。

2. 有了模板文件后,我们需要修改里面的内容,换成我们自己想要的版本内容,最好用nopad++打开。

3. 在打包时加入版本信息。

方法一、还没有打包成exe的py文件

pyinstaller -F --version--file file_version_info.txt XXX.py

方法二、已经打包好的exe

pyi-set_version file_version_info.txt XXX.exe

二、多个py文件

1、尽量将所有要执行的py文件放在一个大文件夹下(里面允许有多个文件夹)

2、命令行输入pyi-makespec main.py 或者 pyi-makespec -F main.py(main.py为Python程序的入口py文件)。

  pyi-makespec main.py --> 打包之后会生成一个目录

  pyi-makespec -F main.py --> 打包之后只会生成一个exe

  选择一个命令即可。

3、现在文件夹下生成了一个main.spec文件和两个文件夹

4、编辑main.spec文件,找到a = Analysis()

第一个参数,放置需要用到的所有py文件。格式为['aaa.py', 'bbb.py', 'ccc.py']。注意:同级目录下,直接写文件名。如果不在同一个文件下,写完整路径,['aaa.py', 'bbb.py', 'c:\\user\\ccc.py']

a = Analysis(['pin.py'],
pathex=['F:\\python_work\\pytest\\pin'],
binaries=[],
datas=[],
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)

第四个参数,datas=[]。如果用到了非py文件需要打包,那么找到datas列表,将非py文件的路径与文件夹名写在元组里。比如,有图片文件的话,可以放在images文件夹中,程序中调用图片文件时,需要用绝对路径,才能打包成功。

例如:

datas = [('C:\\project\\test\\images','images'),('C:\\project\\test\\EventLogs','EventLogs')]

datas:

  1. 第一个参数是Python中的非py类型文件的路径
  2. 第二个参数是非py文件保存此资源的文件夹名称,要和路径中的文件夹名称相同。

第五个参数hiddenimports=[]。如果打包之后出现No module name.....可以采用临时解决方案,将缺少的模块放置在这个列表中。hiddenimports=['PyQt5.sip']

5、保存文件,在.spec文件路径下打开命令行,输入pyinstaller -D main.spec 或者 pyinstaller main.spec

  如果在第2条中选择了pyi-makespec -F main.py ,那么此处只需要执行pyinstaller main.spec即可

6、生成的exe程序在dist文件夹中,dist文件夹里包含了整个项目所需环境,可在其他电脑中进行使用。

特别注意:如果写了关于pyqt5界面的程序的话,并且PyQt5版本在5.13.1之前的话,在其主函数里面导入PYQT5之前需要加上如下代码,在进行打包

import os
if hasattr(sys, 'frozen'):
os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH'] from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyQt5 import QtCore, QtGui, QtWidgets

如果PyQt5界面的程序还报了No module的错误的话,可以采用临时解决方案,在spec里面hiddenimports里面放置那个module,如果想要exe运行时不显示cmd,可以在console那里打false。

a = Analysis(['aaa.py'],
pathex=[''],
binaries=[],
datas=[],
hiddenimports=['PyQt5.sip'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='game_2048',
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=False )

如果需要为exe加上图标的话,可以在console后面加上icon='',填写绝对路径,另外图标的后缀是ico,试过使用jpg格式的,打包没成功。

exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='game_2048',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
icon='F:\\2048game\\resouces\\neko.ico' )

参考链接:http://www.yunweishare.com/?p=726

ok.

Python如何将py文件打包成exe的更多相关文章

  1. python的py文件打包成exe

    一.首先需要安装Pyinstaller-- 使用pip来安装模块 (我电脑上装的是python的一个编译环境Anaconda,如果电脑上装的是python自带的IDE的话,就直接进入python的安装 ...

  2. 如何把py文件打包成exe可执行文件

    如何把py文件打包成exe可执行文件 1.安装 pip install pyinstaller 或者 pip install -i https://pypi.douban.com/simple pyi ...

  3. webService接口的py文件打包成exe

    (一)webService接口的py文件打包成exe,在python3.5版本.pyInstaller3.2版本.pywin32-219.win-amd64-py3.5版本打包时报错,原因可能是pyi ...

  4. 如何将python3.6软件的py文件打包成exe程序

    在我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序.在浏览网上的资料来看,有利用pyinstaller和cx_Freeze进行 ...

  5. 小白学习Python之路---py文件转换成exe可执行文件

    一.背景 今天闲着无事,写了一个小小的Python脚本程序,然后给同学炫耀的时候,发现每次都得拉着其他人过来看着自己的电脑屏幕,感觉不是很爽,然后我想着网上肯定有关于Python脚本转换成可执行文件的 ...

  6. 将py文件打包成exe文件

    PyInstaller工具是跨平台的,它既可以在 Windows平台上使用,也可以在 Mac OS X 平台上运行.在不同的平台上使用 PyInstaller 工具的方法是一样的,它们支持的选项也是一 ...

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

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

  8. 【Python】将python3.6软件的py文件打包成exe程序

    下载pyinstaller pyinstaller 改变图标 pyinstaller -F --icon=my.ico xxx.py 采用命令行操作的办法 在cmd命令行中,输入代码: 首先,前往Py ...

  9. Python的.py文件打包成exe可执行文件

    前几天做了几个简单的爬虫python程序,于是就想做个窗口看看效果. 首先是,窗口的话,以前没怎么接触过,就先考虑用Qt制作简单的ui.这里用前面sinanews的爬虫脚本为例,制作一个获取当天sin ...

随机推荐

  1. 【Java编程实战】Metasploit_Java后门运行原理分析以及实现源码级免杀与JRE精简化

    QQ:3496925334 文章作者:MG1937 CNBLOG博客ID:ALDYS4 未经许可,禁止转载 某日午睡,迷迷糊糊梦到Metasploit里有个Java平台的远控载荷,梦醒后,打开虚拟机, ...

  2. Flink从Kafka取数WordCount后TableApi写入ES

    一.背景说明 需求为从Kafka消费对应主题数据,通过TableApi对数据进行WordCount后,基于DDL写法将数据写入ES. 二.代码部分 说明:代码中关于Kafka及ES的连接部分可以抽象到 ...

  3. Arduino参考手册-函数和变量及电路图

    标题: Arduino参考手册-函数和变量及电路图 作者: 梦幻之心星 sky-seeker@qq.com 标签: [#Arduino,#参考手册,#函数,#变量] 目录: [Arduino] 日期: ...

  4. Jetpack Compose和View的互操作性

    Jetpack Compose Interoperability Compose风这么大, 对于已有项目使用新技术, 难免会担心兼容性. 对于Compose来说, 至少和View的结合是无缝的. (目 ...

  5. 美化terminal时碰到的问题- Set-Theme

    报错: 1 Set-Theme Set-Theme: The term 'Set-Theme' is not recognized as a name of a cmdlet, function, s ...

  6. ELK Stack企业日志平台文档

                                          ELK Stack企业日志平台文档           实验环境 主机名 IP地址 配置 系统版本 用途 controlno ...

  7. vsftpd.conf配置文件详解

    1.默认配置: 1>允许匿名用户和本地用户登陆. anonymous_enable=YES local_enable=YES 2>匿名用户使用的登陆名为ftp或anonymous,口令为空 ...

  8. as3.0 Flex 图像处理

    as3.0 Flex 图像处理 已知的一些图像处理,主要是得到颜色过滤矩阵,不完整,大家一起来补充. //颜色转换数组,所有的0都是可调值public var colorArray:Array = [ ...

  9. 大数据-Hadoop安装

    进入到Hadoop安装包路径下 [atguigu@hadoop101 ~]$ cd /opt/software/ 解压安装文件到/opt/module下面 [atguigu@hadoop101 sof ...

  10. XCTF getit

    一.查壳 是linux的文件.没加壳 二.拖入ida 分析一下逻辑,发现就是t的值就是flag. 写个exp就出来了. 三.exp分享 s='c61b68366edeb7bdce3c6820314b7 ...