小隐的博客

人生在世,笑饮一生
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

python 打包工具

Posted on 2025-07-21 20:32  隐客  阅读(26)  评论(0)    收藏  举报

看了两个,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 

 

真棒!

 

QQ交流