找回密码
 会员注册
查看: 27|回复: 0

pythonpyinstaller打包使用教程,直接打包或.spec打包

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
68585
发表于 2024-9-5 10:02:54 | 显示全部楼层 |阅读模式
个人用到时所写,如有补充、不足或问题,可以联系更改使用pyinstaller直接打包,可能你引用的包或目录文件出现有但查找不到,没有这样的文件。我们就要去找文件改代码,看路径,很麻烦。这时候就可以使用.spec打包**安装PyInstaller**:如果你还没有安装`PyInstaller`,你可以通过以下命令安装: pipinstallpyinstaller使用pyinstaller直接打包pyinstaller-c-Fuser_name.py-iuser_name.ico列举几个常用命令:-D,--onedir生成一个目录,可执行程序。-F,--onefile 生成单个可执行文件。-c,--console,--nowindowed为标准i/o打开一个控制台窗口(默认选项)。在Windows中,如果第一个脚本是‘.pyw’文件,则此选项无效。简称(带控制台)-w,--windowed,--noconsole不提供用于标准i/o的控制台窗口。在macOS上,这也会触发构建一个.app捆绑程序。在Windows系统中,如果第一个脚本是‘.pyw’文件,则会自动设置该选项。在*NIX系统上,该选项将被忽略。简称(不带控制台,gui界面上非常有用)-nNAME,--nameNAME为捆绑的应用程序和spec文件指定的名称(默认值:第一个脚本的名称)。--i,--iconFILE.ico:将图标应用于Windows可执行文件。FILE.exe,ID:从一个exe文件中提取带有ID的图标。FILE.icns:将图标应用到macOS的.app捆绑程序中。如果输入的图像文件不是对应平台的格式(Windows为ico,Mac为icns),PyInstaller会尝试使用Pillow将图标翻译成正确的格式(如果安装了Pillow)。使用“NONE”不应用任何图标,从而使操作系统显示默认图标(默认值:使用PyInstaller的图标)。该选项可多次使用。可参考pyinstaller中文文档使用`PyInstaller`生成`.spec`文件可以帮助你自定义打包过程。以下是如何生成`.spec`文件的步骤:1.**生成.spec文件**:在命令行中进入你的Python脚本所在的目录,并运行以下命令(假设你的脚本名为`your_script.py`):  pyinstaller--name=your_app_name--onefile--windowedyour_script.py  -`--name`:指定生成的应用程序名称。  -`--onefile`:将所有文件打包成一个可执行文件。  -`--windowed`:在Windows上启动时隐藏命令行窗口(适用于GUI应用)。  上述命令会生成一个`.spec`文件(例如`your_app_name.spec`)在当前目录。2.**自定义.spec文件**:可以使用文本编辑器打开生成的`.spec`文件,进行一些自定义设置,比如:  -添加数据文件(`datas`)  -修改隐式导入(`hiddenimports`)  -设置图标(`icon='your_icon.ico'`)3.**使用.spec文件打包**:在修改`.spec`文件后,可以使用以下命令进行打包:  pyinstalleryour_app_name.spec通过这些步骤,你就能够生成并自定义`.spec`文件,用于控制打包过程。自定义,如图:block_cipher=Nonea=Analysis(['执行文件名'],pathex=["C:\\Users\\user\\Desktop填写到项目文件的绝对路径"],binaries=[],datas=[#将同一目录的文件和其他需要的数据文件包括在内,如(os.path.join("C:填写到项目文件的绝对路径",'generate_img.py'),'.'),(os.path.join("C:填写到项目文件的绝对路径",'wechat_auto'),'wechat_auto'),(os.path.join("C:填写到项目文件的绝对路径",'image.jpg'),'.'),(os.path.join("C:填写到项目文件的绝对路径",'text_generate.md'),'.'),(os.path.join("C:填写到项目文件的绝对路径",'ctrl_img.py'),'.'),(os.path.join("C:填写到项目文件的绝对路径",'text_img.py'),'.'),(os.path.join("C:填写到项目文件的绝对路径",'wechat_auto/__init__.py'),'wechat_auto'),(os.path.join("C:填写到项目文件的绝对路径",'wechat_auto/wechat_c_v.py'),'wechat_auto')        #导入同一目录文件夹下的自定义函数],hiddenimports=['wechat_auto/wechat_c_v','requests','urllib3'        #手动添加的模块名],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],cipher=block_cipher,noarchive=False,        #是否显示控制台(终端))pyz=PYZ(a.pure,a.zipped_data,cipher=block_cipher)exe=EXE(pyz,a.scripts,[],exclude_binaries=True,name='py_tkinter_gui',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,upx_exclude=[],runtime_tmpdir=None,console=False,contents_directory='.'        #打包到同一目录下(没有就添加))coll=COLLECT(exe,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,upx_exclude=[],name='执行文件名')
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-5 08:53 , Processed in 1.104597 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表