python3 关于pyinstaller在windows下打包.exe文件

在windows下把所需要的python3 pyinstaller打包exe文件,首先大家肯定都已经安装好了python环境,但是要提醒的一点就是 安装的python环境,不要使用python3 自带的虚拟环境。不要使用python3 自带的虚拟环境!不要使用python3 自带的虚拟环境!重要的事情说三边 pyinstaller 官方文档

1、通过pipy 安装pyinstaller

pip install pyinstaller

注意:安装Pyinstaller过程中是否自动安装pywin32和pypiwin32,没有安装使用以下命令安装 pywin32 pypiwin32

	pip install pywin32
	pip install pypiwin32

2、cd 到你的项目目录并执行以下命令

pyinstaller yourprogram.py

就可以看到build和dist文件夹,.exe就在文件夹dist目录下面
之后

pyinstaller yourprogram.spec

例如: 一个exe文件,去除命令行黑框,设置exe图标 (图标放在根目录下)

pyinstaller --onefile --windowed  -i favicon-logo.ico myscript.py

注:
–noconsole 没有命令框
–onefile 一个文件
–windowed 隐藏代码

-F 选项可以打出一个exe文件,默认是 -D,意思是打成一个文件夹。
-w 选项可以打桌面程序,去掉命令行黑框
-i 可以设置图标路径,将图标放在根目录:

上面设置完之后只要使用.spec文件就行了,修改完之后执行以下命令就行了,不需要执行之前的命令,使用以下命令

pyinstaller yourprogram.spec

3、关于spec文件

这个是打成单一exe文件的spec文件

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(['firstapp.py'],
             pathex=['G:\\python\\firstapp'],
             binaries=[],
             datas=[("recordtool\\bridge.dll",'recordtool'),("recordtool\\brihttpsvr.dll",'recordtool'),("recordtool\\qnviccub.dll",'recordtool')],
             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,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='帮家师傅录音盒子',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=False , icon='favicon-logo.ico')

binaries 二进制文件
datas 打包进去的资源文件
(‘res’,‘res’) 文件夹到根目录的文件夹
(“recordtool\bridge.dll”,‘recordtool’) .dll文件到根目录的recordtool文件目录下面
icon 是图片路径
console 是否显示命令框
debug 是否是调试模式

打包成文件夹的形式

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(['firstapp.py'],
             pathex=['G:\\python\\firstapp'],
             binaries=[],
             datas=[("recordtool\\bridge.dll",'recordtool'),("recordtool\\brihttpsvr.dll",'recordtool'),("recordtool\\qnviccub.dll",'recordtool')],
             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='软件名字',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=False , icon='favicon-logo.ico')
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               upx_exclude=[],
               name='firstapp')

注:coll 是文件夹的选项,如果你的.py文件不是中文的话,name属性尽量不改,不然图标就不正常了。

coll 改了中文名字图标不正常,

解决方案:以下两种方案任选其一

  1. 先用英文文件夹打包,最后改成中文
  2. 需要把你初始化的xx.spec文件改成"中文名字.spec",.spec的coll->name 属性改为.spec的中文名字,就能正常显示图标了

遇到 ** ModuleNotFoundError: No module named ‘win32com’**

pip install pywin32 or pip install pypiwin32

发布了121 篇原创文章 · 获赞 54 · 访问量 44万+

猜你喜欢

转载自blog.csdn.net/wm9028/article/details/100980713
今日推荐