吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8352|回复: 195
上一主题 下一主题
收起左侧

[原创工具] Python EXE1.0.4 python程序可视化打包工具(简化)

    [复制链接]
跳转到指定楼层
楼主
axiuge 发表于 2025-4-10 16:18 回帖奖励
本帖最后由 axiuge 于 2025-4-12 15:27 编辑

开发者的话

我自己经常用Python写程序,但是要把软件发到论坛又不能只发py文件。网上很多打包软件要么要钱要么太丑。所以我就自己写了一个!

我发现很多兄弟 不会打包 正常情况下应该是先创建一个虚拟环境 激活虚拟环境 然后把你导入的第三方包安装到虚拟环境里,然后开始打包,你不能拿个py文件就直接打包,肯定是要报错的。

1.0版本还有一些瑕疵,兄弟们有问题的报错的,截图回帖我来处理。或者有什么好的建议也可以提。

Python EXE 使用指南

版本:1.0.0 By阿修

软件简介

Python EXE 是一款专门为 Python 开发者设计的打包工具,能够将 Python 脚本文件转换为可执行文件(.exe)。无论您是想分享自己的应用程序给没有安装 Python 的用户,还是希望保护自己的源代码,Python EXE 都能满足您的需求。

软件界面


主要功能

  • 单文件打包:将整个应用程序打包成单个 .exe 文件,方便分发和使用
  • 模块分离:将大型模块(如 numpy, pandas 等)分离到 DLL 文件中,减小主程序体积
  • 资源文件打包:支持同时打包程序需要的数据文件、图片等资源文件
  • 自定义图标:为生成的 EXE 文件设置自定义图标,让您的应用更加专业

使用指南

基本设置

  1. 选择 Python 主文件:点击"浏览"按钮选择您的 Python 主程序文件(.py)
  2. 项目文件夹:软件会自动填入主文件所在的文件夹路径
  3. 程序名称:自动根据项目文件夹名称设置,您也可以手动修改
  4. 输出目录:默认设置为项目文件夹下的 dist 目录,可以通过"浏览"按钮修改
  5. 图标文件:如果项目文件夹中有 .ico 文件,会自动选择;您也可以"浏览"选择其他图标文件

打包选项

  • 显示控制台:勾选后,程序运行时会显示控制台窗口,适合需要命令行输出的程序
  • 清理构建文件:打包前清理之前的构建文件,建议保持勾选
  • 包含数据文件夹:勾选后可以选择一个额外的数据文件夹一同打包
  • 打包模式
    • 单文件模式:打包为单个 EXE 文件,适合简单程序和分发
    • 文件夹模式:打包为文件夹,包含 EXE 和依赖文件,适合复杂应用
  • 模块分离(EXE+DLL):选择文件夹模式后可用,将大型模块分离为 DLL 文件,减小主程序体积

提示:模块分离功能适合包含大型库的项目(如 numpy, pandas, matplotlib 等),可以显著减小主 EXE 文件体积,提高启动速度。

高级设置

  • 管理员权限运行:程序运行时要求管理员权限
  • 调试模式:启用 PyInstaller 的调试功能,有助于诊断打包问题
  • 使用 UPX 压缩:使用 UPX 压缩可执行文件,减小体积
  • 附加数据文件:添加单个或多个额外数据文件
  • 附加参数:直接传递给 PyInstaller 的额外命令行参数
  • 虚拟环境设置:指定虚拟环境路径,使用虚拟环境中的 Python 解释器和库进行打包

模块分离选项

当选择"文件夹模式"并启用"模块分离"时,您可以自定义要分离为 DLL 的模块列表:

  1. 勾选"模块分离(EXE+DLL)"选项后,会弹出模块选择对话框
  2. 在列表中勾选您想要分离的模块
  3. 点击"确认"按钮保存选择

注意:tkinter 模块不会被分离,即使您在列表中选择了它。这是为了避免 _tkinter 模块丢失导致的错误。

常见问题与解决方案

打包失败的常见原因

错误信息 可能原因 解决方案
ModuleNotFoundError: No module named 'xxx' PyInstaller 无法找到某个导入的模块 尝试在"高级设置"中添加附加参数:--hidden-import=xxx
ImportError: DLL load failed 动态链接库加载失败 使用"文件夹模式"而非"单文件模式",或确保所有 DLL 文件正确包含
FileNotFoundError 程序运行时找不到数据文件 使用相对路径或 sys._MEIPASS 机制访问资源文件

资源文件访问

当您打包了数据文件夹时,在程序中可以使用以下代码访问这些文件:

import os
import sys

def 获取数据文件夹路径():
    if getattr(sys, 'frozen', False):
        # 打包后的可执行文件
        return os.path.join(os.path.dirname(sys.executable), '数据文件夹名')
    else:
        # 开发环境
        return os.path.join(os.path.dirname(__file__), '数据文件夹名')

数据文件夹 = 获取数据文件夹路径()
文件路径 = os.path.join(数据文件夹, '文件名.txt')

模块分离模式注意事项

当使用模块分离模式时,需要注意以下几点:

  1. 主程序(EXE文件)和分离的模块(DLL文件)必须放在同一目录下
  2. 分发应用程序时,需要分发整个文件夹,而不只是 EXE 文件
  3. 模块分离可以减小主程序体积,提高启动速度,并允许单独更新模块

命令行参数参考

Python EXE 使用 PyInstaller 作为后端打包引擎。以下是一些常用的 PyInstaller 命令行参数:

参数 说明
--onefile 创建单个可执行文件
--onedir 创建一个包含可执行文件和依赖项的目录
--noconsole 不显示控制台窗口(对于 GUI 程序)
--icon=ICON 为可执行文件添加图标
--hidden-import=模块名 添加隐藏导入的模块
--add-data=源路径:目标路径 添加额外数据文件或文件夹
--collect-all=包名 收集指定包的所有依赖项
--uac-admin 以管理员权限运行
--noupx 禁用 UPX 压缩

关于作者

Python EXE 由阿修开发。版本 1.0.0。

如有问题或建议,请联系开发者。


Copyright © 2025 阿修. All rights reserved.

下载地址

https://axiu.lanzouw.com/b02p4k4kbi
密码:apqh

免费评分

参与人数 88吾爱币 +87 热心值 +78 收起 理由
k838868 + 1 + 1 谢谢@Thanks!
ichenqing + 1 + 1 谢谢@Thanks!
wyc4126 + 1 我很赞同!
膜拜宿命大大 + 1 + 1 谢谢@Thanks!
ikerli + 1 + 1 谢谢@Thanks!
冷翅膀 + 1 + 1 热心回复!
kerrychu + 1 + 1 谢谢@Thanks!
confiant + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
aidou316 + 1 + 1 谢谢@Thanks!
AiTing + 1 + 1 只会pip 哈哈
v20471188 + 1 + 1 谢谢@Thanks!
wangyongdesign + 1 + 1 谢谢@Thanks!
板砖拍不倒 + 1 + 1 谢谢@Thanks!
658758 + 1 + 1 谢谢@Thanks!
柳随风五 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yiran365 + 1 + 1 谢谢@Thanks!
Chenanin + 1 + 1 热心回复!
晚安失眠 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ngfc + 1 我很赞同!
mhaitao + 1 + 1 我很赞同!
偶说了算 + 1 + 1 谢谢@Thanks!
yzbf + 1 + 1 谢谢@Thanks!
l686 + 1 + 1 我很赞同!
chang8888 + 1 + 1 我很赞同!
zhuzhuwa + 1 我很赞同!
Azhan1998 + 1 + 1 可以加入pyarmor 嘛
花心乞丐 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
iceboy800 + 1 + 1 谢谢@Thanks!
grrr_zhao + 1 + 1 谢谢@Thanks!
无尘浪子 + 1 谢谢@Thanks!
zzzzzy2k + 1 + 1 谢谢@Thanks!
vip99999 + 1 + 1 谢谢@Thanks!
wzl123wzl + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
duge521 + 1 + 1 用心讨论,共获提升!
qq42773175 + 1 我很赞同!
moxueyuye + 1 + 1 用心讨论,共获提升!
ma4907758 + 1 谢谢@Thanks!
森罗千引 + 1 + 1 谢谢@Thanks!
那些年打的飞机 + 1 + 1 谢谢@Thanks!
M-Riley + 2 + 1 哥,能加上混淆代码的功能吗,既需要压缩体积也需要混淆打包
EnvyHwang + 1 + 1 谢谢@Thanks!
玅尛涵 + 1 + 1 我很赞同!
irotih + 1 谢谢@Thanks!
iphone7 + 1 + 1 我很赞同!
imrobt + 1 + 1 不错,先收藏了,后面可能用得上
Zamboo + 1 热心回复!
pntvmin + 1 + 1 谢谢@Thanks!
kukuyu + 1 + 1 谢谢@Thanks!
Tomyi + 1 + 1 谢谢@Thanks!
terryyann + 1 + 1 谢谢@Thanks!
lunker2019 + 1 + 1 谢谢@Thanks!
老树昏鸦 + 1 热心回复!
tail88 + 1 + 1 谢谢@Thanks!
Me祝 + 1 谢谢@Thanks!
licj888 + 1 + 1 我很赞同!
szddsxj + 1 + 1 谢谢@Thanks!
yaan + 1 + 1 热心回复!
HuLZ2006 + 1 + 1 谢谢@Thanks!
★天若有情★ + 1 + 1 热心回复!
wanglanrui + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
fabaonb + 1 + 1 我很赞同!
FengYing6257 + 1 用心讨论,共获提升!
byxy + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
HN001 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
windy8848 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
public123 + 1 感谢发布有用工具~
voiov + 1 我很赞同!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wooailein + 1 + 1 我很赞同!
wuloveyou + 1 我很赞同!
YihangZhu + 1 不错的工具
抱薪风雪雾 + 1 + 1 谢谢@Thanks!
AngIos + 1 谢谢@Thanks!
tsyhome + 1 + 1 我很赞同!
jtjt68 + 1 + 1 我很赞同!
忆江南 + 1 + 1 我很赞同!
chandle + 1 + 1 热心回复!
jfy168 + 1 + 1 我很赞同!
Cmzlwc + 1 + 1 谢谢@Thanks!
mq0192 + 1 + 1 谢谢@Thanks!
快乐的小驹 + 1 + 1 谢谢@Thanks!
Gounes + 1 热心回复!
gugouo163 + 1 建议添加版本号
hjk + 1 + 1 cmd命令 需要什么工具打包? 是不是也可以?
earner + 1 + 1 我很赞同!
小哲网络 + 2 + 1 这个是好工具啊!!!
E式丶男孩 + 1 + 1 用心讨论,共获提升!
lm11159 + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
追风营销 发表于 2025-4-10 21:45
本帖最后由 追风营销 于 2025-4-10 21:50 编辑
E式丶男孩 发表于 2025-4-10 16:27
看起来像是轮子项目,此前auto-py-exe就已经很好用了

这个工具我找到的也不错开源的  SoEasyPack
此项目受PyStand和PythonSizeCruncher启发。
不需要复制嵌入式包,也不必再二次瘦身,一次打包理论上就是最小依赖文件数
用简易的方式复制你的python项目并自动精准匹配环境依赖,几乎没有什么多余文件, 并且可以生成一个exe启动器启动项目。(用go语言编译,已内置简化过的go环境)
快速/普通模式原理:使用微软procmon进程监控工具(已内置),监控项目运行时访问的文件记录
仅支持windows,且仅在windows10和11上测试过

[Asm] 纯文本查看 复制代码
打包工具	打包后大小
nuitka 2.5.9打包	67.9M
PyStand仅删除pip文件夹	56.9M
Pyinstaller 6.11.1打包缺依赖 补上后	49.3M
soeasypack的ast模式打包	43.7M
soeasypack的快速模式打包	33.5M
soeasypack的普通模式打包	33.5M
soeasypack的单exe模式打包	16.3M

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
ly871108 + 1 + 1 谢谢@Thanks!
luojineng + 1 热心回复!

查看全部评分

推荐
 楼主| axiuge 发表于 2025-4-10 16:45 |楼主
hjk 发表于 2025-4-10 16:34
@axiuge

这种cmd命令 需要什么工具打包? 是不是也可以?

这个是打包python的 有需要的 我以后可以写一个
推荐
cxcio 发表于 2025-4-10 16:48
图上目录路径,为啥都是反斜杠/,windows路径不都是用 \ 的么?
3#
E式丶男孩 发表于 2025-4-10 16:27
看起来像是轮子项目,此前auto-py-exe就已经很好用了
4#
小哲网络 发表于 2025-4-10 16:31
这个是好工具啊!!!
5#
hjk 发表于 2025-4-10 16:34
本帖最后由 hjk 于 2025-4-10 16:35 编辑

@axiuge

这种cmd命令 需要什么工具打包? 是不是也可以?

ANSI编码模式无乱码


[PowerShell] 纯文本查看 复制代码
@echo off
setlocal enabledelayedexpansion
 
REM 设置代码页为中文GBK以正确显示字符
chcp 936 >nul
 
REM 检查是否拖放了文件夹
if "%~1"=="" (
    echo 错误:请将文件夹拖放到此脚本上。
    pause
    exit /b
)
 
REM 验证路径是否存在且为文件夹
if not exist "%~1\" (
    echo 错误:路径不存在或不是文件夹。
    pause
    exit /b
)
 
REM 设置输入输出路径
set "input_dir=%~1"
if "!input_dir:~-1!"=="\" set "input_dir=!input_dir:~0,-1!"
set "output_dir=!input_dir!_out"
 
REM 创建输出目录
if not exist "!output_dir!\" mkdir "!output_dir!" >nul 2>&1
 
echo 正在扫描视频文件,请稍候...
 
REM 定义视频扩展名列表
set "extensions=*.avi *.mp4 *.mkv *.mov *.wmv *.flv *.webm *.m4v *.3gp *.ts"
 
REM 获取文件总数并生成临时列表
set "temp_file=%temp%\%random%.tmp"
type nul > "%temp_file%"
set /a total=0
for /r "%input_dir%" %%f in (%extensions%) do (
    echo %%f >> "%temp_file%"
    set /a total+=1
)
 
if !total! equ 0 (
    echo 未找到任何视频文件。
    del "%temp_file%" >nul 2>&1
    pause
    exit /b
)
 
echo 共找到 !total! 个视频文件
echo ----------------------------
 
REM 字幕配置区域
set "FONT=font.ttf"
set "TEXT1=集集集集集集集集 ,"
set "TEXT2=信信信信信信信信:"
set "TEXT3=+8+8+8+8+8+8"
set "SPEED=10"
set "SPACING=100"
 
REM 处理文件并显示进度
set /a processed=0
for /f "usebackq delims=" %%f in ("%temp_file%") do (
    set /a processed+=1
    set "input_file=%%f"
    set "output_path=!input_file:%input_dir%=%output_dir%!"
 
    REM 创建子目录结构(保留空格)
    for %%A in ("!output_path!") do set "out_dir=%%~dpA"
    if not exist "!out_dir!" (
        mkdir "!out_dir!" >nul 2>&1 || (
            echo [错误] 无法创建目录: "!out_dir!"
            pause
            exit /b 1
        )
    )
 
    echo [处理中] [!processed!/!total!] 正在处理 "!input_file!"
 
    REM 执行FFmpeg命令
    ffmpeg -hwaccel auto -i "!input_file!" ^
        -vf "drawtext=fontfile='!FONT!':text='!TEXT1!':fontsize=min(w\,h)/10:fontcolor=red:x='w - mod(t-2\,!SPEED!)*(w + text_w)/!SPEED!':y='h/2 - text_h - !SPACING!':enable='gte(t,2)*lte(t,2147483647)',drawtext=fontfile='!FONT!':text='!TEXT2!':fontsize=min(w\,h)/10:fontcolor=red:x='w - mod(t-2\,!SPEED!)*(w + text_w)/!SPEED!':y='h/2':enable='gte(t,2)*lte(t,2147483647)',drawtext=fontfile='!FONT!':text='!TEXT3!':fontsize=min(w\,h)/10:fontcolor=red:x='w - mod(t-2\,!SPEED!)*(w + text_w)/!SPEED!':y='h/2 + text_h + !SPACING!':enable='gte(t,2)*lte(t,2147483647)'" ^
        -c:a copy -f mp4 "!output_path!" -y >nul 2>&1
 
    REM 错误处理
    if errorlevel 1 (
        echo [错误] 处理失败:!input_file!
    ) else (
        echo 成功生成:!output_path!
    )
)
 
del "%temp_file%" >nul 2>&1
echo ----------------------------
echo 所有文件处理完成!
echo 输出目录:!output_dir!
pause

6#
yanguichao 发表于 2025-4-10 16:39
我是一名小白,
我是这样操作的,利用deepseek生成一段python代码。拷贝到记事本扩展名改成py。
然后使用楼主提供的程序进行打包。试了两段代码,都是提示“打包过程出错,[winerror 2]系统找不到指定文件”
请问是我电脑缺少什么的支持吗?
7#
muster 发表于 2025-4-10 16:39
谢谢分享~~~~~~~~~~~~~~~~~~~~~~~

免费评分

参与人数 1吾爱币 -1 收起 理由
我心飞翔1995 -1 请勿灌水,提高回帖质量是每位会员应尽的义务!

查看全部评分

8#
zhouz848 发表于 2025-4-10 16:42
好东西,学习一下
9#
 楼主| axiuge 发表于 2025-4-10 16:46 |楼主
yanguichao 发表于 2025-4-10 16:39
我是一名小白,
我是这样操作的,利用deepseek生成一段python代码。拷贝到记事本扩展名改成py。
然后使用 ...

截图看一下报错。
10#
hjk 发表于 2025-4-10 16:47
axiuge 发表于 2025-4-10 16:45
这个是打包python的 有需要的 我以后可以写一个

好滴哈 我看他们CMD打包的LOGO和你的一模一样
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-17 22:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表