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

相关推荐
liebe1*1几秒前
第七章 防火墙地址转换
运维·服务器·网络
BoBoZz192 分钟前
AlignTwoPolyDatas 基于ICP算法的配准和相机视角切换
python·vtk·图形渲染·图形处理
好好学操作系统6 分钟前
autodl 保存 数据 跨区
linux·运维·服务器
dbitc9 分钟前
WIN11把WSL2移动安装目录
linux·运维·ubuntu·wsl
KingRumn9 分钟前
Linux同步机制之信号量
linux·服务器·网络
旺仔Sec9 分钟前
2026年度河北省职业院校技能竞赛“Web技术”(高职组)赛项竞赛任务
运维·服务器·前端
嗝o゚14 分钟前
Flutter与开源鸿蒙:一场“应用定义权”的静默战争,与开发者的“范式跃迁”机会
python·flutter
一只会奔跑的小橙子16 分钟前
pytest安装对应的库的方法
python
ohoy29 分钟前
EasyPoi 数据脱敏
开发语言·python·excel
BullSmall30 分钟前
linux 根据端口查看进程
linux·运维·服务器