|
个人用到时所写,如有补充、不足或问题,可以联系更改使用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='执行文件名')
|
|