Solowang 发表于 2024-3-18 09:57

python将脚本打包成执行文件

本帖最后由 Solowang 于 2024-3-18 10:00 编辑

                                                                                                                                                                      新手刚刚学习,嘿嘿 。慢慢积累总会有结果、
PyInstaller:                  是一个第三方库,它能够在 windows\linux\mac os   系统下进行操作将python系统进行打包成执行文件、python程序可以在没有安装python环境下进行运行,
                                                ,也可以作为一个独立文件进行传递或管理。支持python 2.7 或 3.3+。

安装PyInstaller :
                              安装:pip installpyinstaller
                              更新:pip install --upgradepyinstaller                  
常用选项:
                        -h,–help      查看该模块的帮助信息
                     -F,-onefile      产生单个的可执行文件
                     -D,–onedir      产生一个目录(包含多个文件)作为可执行程序
                     -a,–ascii      不包含 Unicode 字符集支持
                      -d,–debug      产生 debug 版本的可执行文件
                     -w,–windowed,–noconsolc      指定程序运行时不显示命令行窗口(仅对 Windows 有效)
                     -c,–nowindowed,–console      指定使用命令行窗口运行程序(仅对 Windows 有效)
                     -o DIR,–out=DIR      指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
                     -p DIR,–path=DIR      设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。
                      也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径-n NAME,–name=NAME      
                     指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字-i      选择图标



使用简单:         可以在黑窗口WIN+R    输入cmd    ,    输入pyinstaller -i xxx.py    进行打包执行

醉红尘0 发表于 2024-3-18 10:53

补充一点,打包成exe后,别用“os.path.dirname(os.path.abspath(__file__))”之类的方法获取项目所在目录,因为打包后的exe运行时是通过临时运行一个虚拟目录的方式运行的,通过上面的方法获取到的目录是该虚拟目录所在路径,而不是exe所在目录。如果需要用到一些和目录项目的操作(比如处理exe同级命令下的某个txt之类的),建议用“./”等相对目录方式。

土鸡炖蘑菇 发表于 2024-3-18 10:51

momomo0 发表于 2024-3-18 10:42
怎么将整个项目文件夹打包呢

-F 打包成单文件,如果有附带资源可以用 --add-data 或者修改spec文件。看4楼

土鸡炖蘑菇 发表于 2024-3-18 10:47

本帖最后由 土鸡炖蘑菇 于 2024-3-18 10:50 编辑

-i是指定图标,楼主 编译exe命令写了-i还不带 图标文件, 这是干啥。

正确用法:   pyinstaller xxx.py
如果需要打包成单文件,就是pyinstaller -F xxx.py
不需要dos窗口出来 就加个-w
如果需要以管理员身份运行可以加   --uac-admin
自定义图标需要提前准备ico图标文件,pyinstaller -i xx.icoxxx.py

也可以多个参数一起使用,例如脚本文件main.py ,图标文件abc.ico ,用QT做了UI 不需要dos界面同时需要管理员身份运行: pyinstaller -F -w --uac-admin -i abc.ico main.py


如果需要打包其他资源文件,可以用--add-data,不过这个我习惯是修改spec文件      pyinstaller x.py --add-data="源地址;目标地址"      ,具体可以参考https://blog.csdn.net/u012219045/article/details/114841287

momomo0 发表于 2024-3-18 10:42

怎么将整个项目文件夹打包呢

pngdngli 发表于 2024-3-18 10:44

正需要.............

唯爱丶雪 发表于 2024-3-18 10:55

pyinstaller -F -w XX.py用这个就行了

tingyucloud 发表于 2024-3-18 10:59

可以可以,学

typps 发表于 2024-3-18 11:00

比如想在mac上打包exe程序的话,有什么方法可以实现嘛~求大佬

st0rm 发表于 2024-3-18 11:04

typps 发表于 2024-3-18 11:00
比如想在mac上打包exe程序的话,有什么方法可以实现嘛~求大佬

应该可以直接指定打包文件的格式的吧
页: [1] 2 3 4 5 6 7
查看完整版本: python将脚本打包成执行文件