看了两个,Nuitka 比较猛,但有些库的兼容性不好,还是用PyInstaller了
PyInstaller 支持跨平台,单文件/文件夹模式 简单项目快速打包
Nuitka 编译为C代码,性能更高 需要加密或优化的项目
1、那就先把py变成pyd
from distutils.core import setup from Cython.Build import cythonize setup(ext_modules=cythonize("T.py"))
运行 python setup.py build_ext --inplace ,记得先安装 cython
2、打包:
先写个配置文件main.spec
模板如下:
# -*- mode: python ; coding: utf-8 -*- block_cipher = None a = Analysis( ['main.py'], pathex=['.'], binaries=[ # 加入你需要的 DLL 文件 ('py_dll/lib64/xx.dll', 'py_dll/lib64'), ('T.pyd', '.'), # 如果还有其他 DLL,可继续添加 # ('py_dll/lib64/xxx.dll', 'py_dll/lib64'), ], datas=[ # 包含 py_dll 模块代码 ('py_dll/*.py', 'py_dll'), ('py_dll/lib64/*.dll', 'py_dll/lib64'), ], hiddenimports=['tkinter', 'tkinter.ttk'], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, ) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE( pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='main', # 替换为你希望生成的程序名 debug=False, bootloader_ignore_signals=False, strip=False, upx=True, console=True, # 设置为 False 可隐藏命令行窗口 ) coll = COLLECT( exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, name='main' )
运行pyinstaller main.spec ,记得先安装 pyinstaller
真棒!
浙公网安备 33010602011771号