https://blog.csdn.net/Nire_Yeyu/article/details/104683888/
安装:pip install pyinstaller
安装时报错,原因是环境变量需要在多配一个路径
打包为exe,版本尽量选择python3.6+32位版本,因为win64位系统向下兼容32位程序,但如果不考虑32位系统的话就无所谓,直接python64位版本直接打包即可,只是只能在win64位系统上跑
pyinstaller的打包机制:我们写的python脚本是不能脱离python解释器单独运行的,所以在打包时,至少会将python解释器和脚本一起打包,同样,为了打包的exe能正常运行,会把我们所有安装的第三方包一并打包到exe;即使我们项目只使用一个requests包,但可能还安装了其它n个包,但是他不管,因为包和包有依赖关系,如果我们只装了一个requests包,但requests包会顺带装一些其它依赖小包,所以为了安全,只能将所有三方包+python解释器一起打包。如下图所示
打包成功的信息如下:
D:pylx20210622>pyinstaller -F plcjwj.py
71 INFO: PyInstaller: 3.3.1
71 INFO: Python: 3.6.2
72 INFO: Platform: Windows-10-10.0.18362-SP0
74 INFO: wrote D:pylx20210622plcjwj.spec
76 INFO: UPX is not available.
78 INFO: Extending PYTHONPATH with paths
['D:\pylx\20210622', 'D:\pylx\20210622']
78 INFO: checking Analysis
81 INFO: Building because D:pylx20210622plcjwj.py changed
81 INFO: Initializing module dependency graph...
84 INFO: Initializing module graph hooks...
86 INFO: Analyzing base_library.zip ...
3620 INFO: running Analysis out00-Analysis.toc
3623 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
required by d:userszrappdatalocalprogramspythonpython36python.exe
3879 INFO: Caching module hooks...
3884 INFO: Analyzing D:pylx20210622plcjwj.py
3889 INFO: Loading module hooks...
3889 INFO: Loading module hook "hook-encodings.py"...
3996 INFO: Loading module hook "hook-pydoc.py"...
3997 INFO: Loading module hook "hook-xml.py"...
4299 INFO: Looking for ctypes DLLs
4299 INFO: Analyzing run-time hooks ...
4307 INFO: Looking for dynamic libraries
4384 INFO: Looking for eggs
4384 INFO: Using Python library d:userszrappdatalocalprogramspythonpython36python36.dll
4384 INFO: Found binding redirects:
[]
4392 INFO: Warnings written to D:pylx20210622uildplcjwjwarnplcjwj.txt
4441 INFO: Graph cross-reference written to D:pylx20210622uildplcjwjxref-plcjwj.html
4454 INFO: checking PYZ
4456 INFO: Building because toc changed
4456 INFO: Building PYZ (ZlibArchive) D:pylx20210622uildplcjwjout00-PYZ.pyz
4997 INFO: Building PYZ (ZlibArchive) D:pylx20210622uildplcjwjout00-PYZ.pyz completed successfully.
5005 INFO: checking PKG
5006 INFO: Building because toc changed
5006 INFO: Building PKG (CArchive) out00-PKG.pkg
5077 INFO: Updating manifest in C:UserszrAppDataRoamingpyinstallerincache00_py36_64bitunicodedata.pyd
5077 INFO: Updating resource type 24 name 2 language 1033
6561 INFO: Building PKG (CArchive) out00-PKG.pkg completed successfully.
6565 INFO: Bootloader d:userszrappdatalocalprogramspythonpython36libsite-packagesPyInstallerootloaderWindows-64bit
un.exe
6565 INFO: checking EXE
6567 INFO: Rebuilding out00-EXE.toc because plcjwj.exe missing
6567 INFO: Building EXE from out00-EXE.toc
6567 INFO: Appending archive to EXE D:pylx20210622distplcjwj.exe
6578 INFO: Building EXE from out00-EXE.toc completed successfully.
pyinstaller -w -F XXX.py
-F是覆盖之前的打包
在.py转.exe过程中遇到了一个问题,
原因是:https://blog.csdn.net/weixin_41010198/article/details/87255393
这是因为您enum不是标准的库enum模块。您可能已enum34安装该软件包。
检查是否属于这种情况的一种方法是检查财产 enum.file
从python 3.6开始,enum34库不再与标准库兼容。该库也是不必要的,因此您只需卸载它即可。我安装的python版本是3.6.5版本的,所有直接卸载enum库即可