将Python文件打包成.EXE可执行文件的方法 利用Python写了一个小脚本想要传给使用Windows但没有装Python的朋友执行,这时候就可以利用将档案包装成exe档案,让没有Python的朋友也可以执行。本篇将介绍利用套件「PyInstaller」制作exe档。 1|0安装方法 #安装pyinstaller pip install pyinstaller #安装依赖 pip install pywin32-ctypes 2|0常用参数介绍 pyinstaller -h来查看参数 -F打包成一个exe文件 -i图标路径 -w使用视窗,无控制台 -c使用控制台,无视窗 -D创建一个目录,包含exe以及其他一些依赖性文件 编译文件时,我们通常使用如下命令: pyinstaller -F -w -i favo.ico main.py 3|0静态文件 对于python所依赖的图片,config.yaml等静态文件,pyinstall不会自动打包,需要手动在main.py(所需要打包的入口文件)的相同目录中寻找main.spec,修改datas依赖,才可以自动打包到exe的相同目录下,然后执行即可 datas是一个数组,每个子项是一个tuple,其中tuple的第一个参数是你要打包的源路径,第二个参数是打包后的名字 # -*- mode: python -*- block_cipher = None a = Analysis(['ui.py'], pathex=['C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test'], binaries=[], datas=[('C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test\\images','images'),('C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test\\question.yaml','question.yaml')], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) 然后执行: pyinstaller -F main.spec 4|0示例 如下图所示,我们编写一个输出helow pyinstaller的Python程序,并利用input()使程序可以暂时停在输出画面。 print('helow pyinstaller') input('please wait:') 编译python为exe,编译过程中会自动安装相关依赖 pyinstaller -F hello.py 编译过程中会产生如下输出: … 6942 INFO: checking PY 6944 INFO: Building because toc changed 6944 INFO: Building PYZ(ZlibArchive)C:\Users\user\Desktop\test\build\test\PYZ-00.pyz 7559 INFO: Building PYZ(ZlibArchive)C:\Users\user\Desktop\test\build\test\PYZ-00.pyz completed successfully. 7568 INFO: checking PKG 7569 INFO: Building because toc changed 7569 INFO: Building PKG(CArchive)PKG-00.pkg 9407 INFO: Building PKG(CArchive)PKG-00.pkg completed successfully. 9409 INFO: Bootloader c:\users\user\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run.exe9409 INFO: checking EXE 9411 INFO: Building because toc changed 9411 INFO: Building EXE from EXE-00.toc 9412 INFO: Appending archive to EXE C:\Users\user\Desktop\test\dist\test.exe 9455 INFO: Building EXE from EXE-00.toc completed successfully. 通过输出可以看出pyinstaller进行了如下操作: 会先建立一个hello.spec 建立「build」文件夹 建立log纪录档与工作档案于文件夹build中 建立「dist」文件夹 建立执行档(.exe)在「dist」文件夹 4|1注意事项 执行档案可在win8/win10,64位的电脑运行,但win7 x64和其余所有32位失败,会提示不兼容,若要能32位与64位皆可运行,就要在Python 32位的环境下编译PyInstaller打包exe,才能在32位与64位成功。