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

相关推荐
言之。21 分钟前
Python3 简易DNS服务器实现
python·dns
正在走向自律23 分钟前
GpuGeek 网络加速:破解 AI 开发中的 “最后一公里” 瓶颈
网络·人工智能·python·机器学习·性能优化·gpugeek
IT小郭.43 分钟前
使用 Docker Desktop 安装 Neo4j 知识图谱
windows·python·sql·docker·知识图谱·database·neo4j
淡水猫.43 分钟前
hbit资产收集工具Docker(笔记版)
运维·docker·容器
qh0526wy2 小时前
金融接口基方法Python
windows·python·金融
.生产的驴2 小时前
Vue3 加快页面加载速度 使用CDN外部库的加载 提升页面打开速度 服务器分发
运维·服务器·前端·vue.js·分布式·前端框架·vue
程序员JerrySUN2 小时前
Linux 内核核心知识热点题分析:10 个连环打通的难点
linux·运维·服务器
史迪仔01122 小时前
Python生成器:高效处理大数据的秘密武器
前端·数据库·python
R_.L3 小时前
Linux : 线程【同步与互斥】
linux
再睡一夏就好3 小时前
从硬件角度理解“Linux下一切皆文件“,详解用户级缓冲区
linux·服务器·c语言·开发语言·学习笔记