linux下的python打包

linux下的python打包

一、pyinstaller

优点:打包简单,将整个运行环境进行打包

缺点:打包文件大、臃肿、启动慢

  1. 安装pyinstaller包
shell 复制代码
pip install pyinstaller  
  1. 打包一个文件
shell 复制代码
pyinstaller -D app.py

会在当前路径中生成build、dist文件夹还有一个spec文件,你生成的exe就在dist里边。双击即可运行。

参数:

参数 说明
-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 的名字

二、nuitka

缺点:没有打包依赖、环境、需要安装c++编译器

优点:启动快、打包后的程序小、将Python代码转换成C或C++代码

  1. 安装Nuitka
shell 复制代码
pip install Nuitka

# 安装编译依赖(ubuntu)
apt-get install gcc
apt-get install g++
apt-get install clang
  1. 打包
shell 复制代码
python -m nuitka --clang --standalone --show-memory --show-progress --nofollow-imports --plugin-enable=qt-plugins --follow-import-to=utils,src --output-dir=out --windows-icon-from-ico=./logo.ico demo.py

打包完目录结构:

shell 复制代码
├─utils //源码1文件夹
├─src // 源码2文件夹
├─out // 生成的exe文件夹
    ├─demo.build 
    └─demo.dist
		└─demo.exe // 生成的exe文件
├─logo.ico // demo的图标
└─demo.py // main文件

常用参数:

text 复制代码
--clang 使用clang编译器
--standalone 独立环境,使结果可移植
--windows-disable-console 去掉CMD控制窗口
--output-dir=out 生成exe到out文件夹下面去
--show-progress 显示编译的进度
--show-memory 显示内存的占用
--enable-plugin=pyqt5   打包pyqt5模块的需要
--plugin-enable=tk-inter 打包tkinter模块的需要
--plugin-enable=numpy 打包numpy,pandas,matplotlib模块的需要
--plugin-enable=torch 打包pytorch的需要
--plugin-enable=tensorflow 打包tensorflow的需要
--windows-icon-from-ico=你的.ico 软件的图标
--windows-company-name=Windows下软件公司信息
--windows-product-name=Windows下软件名称
--windows-file-version=Windows下软件的信息
--windows-product-version=Windows下软件的产品信息
--windows-file-description=Windows下软件的作用描述
--windows-uac-admin=Windows下用户可以使用管理员权限来安装
--linux-onefile-icon=Linux下的图标位置
--onefile 打包为单个exe文件
--include-package=复制比如numpy,PyQt5 这些带文件夹的包或库
--include-module=复制比如when.py 这些以.py结尾的叫模块
--include-package-data=包含给定软件包名称中的数据文件,等号后软件包名称。有的时候Nuitka并不能正确分析出一些Python软件包所需要使用的数据文件,在运行程序时提示FileNotFoundError等错误,此时就需要使用该选项。如:--include-package-data=ultralytics
--include-data-files= 按文件名包含数据文件,等号后的格式为<SRC=DEST>。SRC指的是文件夹的路径,DEST指的是文件夹相对于打包结果的路径,其中DEST只能使用相对路径。如:--include-data-files=/Users/admin/Downloads/yolov5n.pt=./yolov5n.pt
--include-data-dir= 包含文件夹中的数据文件,等号后的格式为<SRC=DEST>。使用方法与--include-data-files=相同。
--follow-import-to=MODULE/PACKAGE  如果使用该模块,请遵循该模块;如果是一个包,请遵循整个包。可以多次给定。默认为空。
--nofollow-import-to=允许从导入过程中排除特定的子目录
--follow-import-to=打包包含的文件夹
--remove-output  打包结束后删除产生的临时文件

参考:
python的打包神器------Nuitka

相关推荐
Quz15 分钟前
解决DeepSeek服务器繁忙问题的实用指南
运维·服务器·人工智能·deepseek
鸡鸭扣2 小时前
Docker:3、在VSCode上安装并运行python程序或JavaScript程序
运维·vscode·python·docker·容器·js
paterWang2 小时前
基于 Python 和 OpenCV 的酒店客房入侵检测系统设计与实现
开发语言·python·opencv
A ?Charis2 小时前
k8s-对接NFS存储
linux·服务器·kubernetes
东方佑2 小时前
使用Python和OpenCV实现图像像素压缩与解压
开发语言·python·opencv
神秘_博士3 小时前
自制AirTag,支持安卓/鸿蒙/PC/Home Assistant,无需拥有iPhone
arm开发·python·物联网·flutter·docker·gitee
Moutai码农4 小时前
机器学习-生命周期
人工智能·python·机器学习·数据挖掘
人工干智能5 小时前
科普:“Docker Desktop”和“Docker”以及“WSL”
运维·docker·容器
落笔画忧愁e5 小时前
FastGPT及大模型API(Docker)私有化部署指南
运维·docker·容器
小白教程5 小时前
python学习笔记,python处理 Excel、Word、PPT 以及邮件自动化办公
python·python学习·python安装