python工程打包成exe

1. 使用PyInstaller

 

       PyInstaller是打包Python程序最流行的工具之一,它可以生成独立可执行的程序。

 

参数及其作用:

 

打包类型:

- `-F`, `--onefile`:生成单个可执行文件。

- `-D`, `--onedir`:生成包含多个文件的可执行目录(默认选项)。

- `-w`, `--windowed`:不显示控制台窗口(对于GUI应用)。

- `-c`, `--console`:显示控制台窗口(默认选项,对于命令行应用)。

- `--service`:生成Windows服务程序。

 

可执行文件名和图标:

- `-n`, `--name`:指定生成可执行文件的名称。

- `-i`, `--icon`:指定可执行文件的图标。

 

资源文件和数据文件:

- `--add-data`:添加非Python文件到可执行文件中(格式:`<SRC;DEST or SRC:DEST>`)。

- `--hidden-import`:包括PyInstaller可能检测不到的隐藏导入。

- `--add-binary`:添加二进制文件。

- `--add-resource`:添加资源文件。

 

优化和压缩:

- `--upx`:使用UPX压缩可执行文件(如果已安装UPX)。

- `--noupx`:不使用UPX压缩可执行文件。

 

清理和调试:

- `--clean`:在打包之前清除缓存和临时文件。

- `--log-level`:设置日志级别(DEBUG, INFO, WARN, ERROR, CRITICAL)。

 

其他:

- `--runtime-tmpdir`:指定运行时临时文件的目录。

- `--version-file`:指定包含版本信息的文件。

- `--strip`:去除二进制文件中的符号信息。

pyinstaller打包时的加密

通过修改`spec`文件,添加运行时选项来增强安全性。虽然`PyInstaller`本身不直接支持加密功能,但你可以通过以下方式修改`spec`文件:

 

```python

# 在spec文件中添加以下内容

# hooks/hook-encodings.py 是一个示例,具体情况可能需要根据你使用的库进行修改

a = Analysis(['your_script.py'],

pathex=['path_to_your_script'],

binaries=[],

datas=[],

hiddenimports=[],

hookspath=[],

hooksconfig={},

runtime_hooks=['hooks/hook-encodings.py'], # 添加你的运行时钩子

excludes=[],

win_no_prefer_redirects=False,

win_private_assemblies=False,

cipher=1, # 这将启用加密.pyc文件的功能(需要使用--key参数)

noarchive=False)

```

 

使用`--key`参数给PyInstaller命令行提供一个密钥来加密`.pyc`文件:

 

```shell

pyinstaller --key your_secret_key your_script.py

```

 

 

使用案例:

 

```shell

pyinstaller -F myscript.py --icon=icon.ico --add-data 'src;dest' --hidden-import=module.name

```

 

2.使用cx_Freeze

 

cx_Freeze是另一个流行的打包工具,它将Python脚本转换为可执行文件。

 

参数及其作用:

 

- `-c`:创建压缩的可执行文件。

- `-o`:指定输出目录。

- `-r`:包含的额外运行时文件。

- `-s`:不包含独立的Python解释器。

- `--include-modules`:包括额外的模块。

- `--exclude-modules`:排除某些模块。

 

使用案例:

 

```shell

cxfreeze myscript.py --icon=icon.ico --include-modules=module1,module2 --exclude-modules=module3

```

 

3. 使用py2exe(仅限Windows,很少使用)

 

`py2exe`是一个用于Windows平台的打包工具。

 

参数及其作用:

 

- `--dist-dir`:指定生成的可执行文件的目录。

- `--icon`:指定图标文件。

- `--includes`:包括额外的模块。

- `--excludes`:排除某些模块。

 

使用案例:

 

```shell

python setup.py py2exe --dist-dir=.\dist --icon=icon.ico --includes=module1,module2

```

 

4. 使用`Nuitka`

 

`Nuitka`是一个将Python代码转换为C语言然后编译成可执行文件的工具。

 

参数及其作用:

 

 

1. `-o` 或 `--output-dir`

- 描述:指定输出目录,用于存储生成的可执行文件和其他相关文件。

- 示例:`nuitka --output-dir=/path/to/output myscript.py`

 

2. `--file-reference-choice`

- 描述:控制用于引用包含在输出文件夹中的文件的策略。

- 示例:`nuitka --file-reference-choice=runtime myscript.py`

 

3. `-s` 或 `--standalone`

- 描述:创建一个完全独立的可执行文件,包含所有依赖的库。

- 示例:`nuitka --standalone myscript.py`

 

4. `--recurse-none`

- 描述:不递归包含任何模块,除非明确指定。

- 示例:`nuitka --recurse-none myscript.py`

 

5. `--recurse-all`

- 描述:递归包含所有用到的模块。

- 示例:`nuitka --recurse-all myscript.py`

 

6. `--recurse-to`

- 描述:递归包含指定的模块及其依赖。

- 示例:`nuitka --recurse-to=module1,module2 myscript.py`

 

7. `--recurse-not-to`

- 描述:明确不递归包含指定的模块。

- 示例:`nuitka --recurse-not-to=module1,module2 myscript.py`

 

8. `--include-plugin-directory`

- 描述:包含指定的插件目录。

- 示例:`nuitka --include-plugin-directory=/path/to/plugin myscript.py`

 

9. `--include-package`

- 描述:包含指定的包。

- 示例:`nuitka --include-package=package1,package2 myscript.py`

 

10. `--include-module`

- 描述:包含指定的模块。

- 示例:`nuitka --include-module=module1,module2 myscript.py`

 

11. `--nofollow-imports`

- 描述:不遵循import语句。

- 示例:`nuitka --nofollow-imports myscript.py`

 

12. `--plugin-enable`

- 描述:启用指定的插件。

- 示例:`nuitka --plugin-enable=plugin_name myscript.py`

 

13. `--plugin-disable`

- 描述:禁用指定的插件。

- 示例:`nuitka --plugin-disable=plugin_name myscript.py`

 

14. `--windows-icon`

- 描述:为Windows可执行文件指定图标。

- 示例:`nuitka --windows-icon=/path/to/icon.ico myscript.py`

 

15. `--linux-icon`

- 描述:为Linux可执行文件指定图标。

- 示例:`nuitka --linux-icon=/path/to/icon.png myscript.py`

 

16. `--macos-icon`

- 描述:为macOS可执行文件指定图标。

- 示例:`nuitka --macos-icon=/path/to/icon.icns myscript.py`

 

17. `-v` 或 `--verbose`

- 描述:输出详细信息。

- 示例:`nuitka -v myscript.py`

 

18. `--show-memory`

- 描述:显示内存使用情况。

- 示例:`nuitka --show-memory myscript.py`

 

19. `--show-progress`

- 描述:显示编译进度。

- 示例:`nuitka --show-progress myscript.py`

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/759736.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【python爬虫实战】爬取豆瓣top250(网站有反爬虫机制肿么办)

关于请求头headers: 值得注意的是&#xff0c;与上一篇 &#xff1a;​​​​​​【python爬虫实战】爬取书店网站的 书名&价格&#xff08;注释详解&#xff09;-CSDN博客 爬取书名不同&#xff0c;这次爬取豆瓣网站必须使用“请求头headers”&#xff0c;不然将没有输…

Tomcat的安装和虚拟主机和context配置

一、 安装Tomcat 注意&#xff1a;安装 tomcat 前必须先部署JDK 1. 安装JDK 方法1&#xff1a;Oracle JDK 的二进制文件安装 [rootnode5 ~]# mkdir /data [rootnode5 ~]# cd /data/ [rootnode5 data]# rz[rootnode5 data]# ls jdk-8u291-linux-x64.tar.gz [rootnode5 data]…

通用管理页面的功能实现

在Windows Forms&#xff08;WinForms&#xff09;应用程序中&#xff0c;创建一个通用的管理页面通常涉及对数据的增删改查&#xff08;CRUD&#xff09;操作&#xff0c;以及一些额外的功能&#xff0c;如数据过滤、排序、导出和导入等。 先看一个仓库管理页面要素。 仓库管…

Tcmalloc工具定位内存泄漏问题

内存泄漏问题定位 gperftools工具安装 执行如下操作&#xff1a; git clone https://github.com/gperftools/gperftools.git 注&#xff1a;如果网速较慢&#xff0c;可直接去下载压缩包。 如我下载的地址&#xff1a;https://github.com/gperftools/gperftools/releases/ta…

ComfyUI局部重绘的四种方式 (附件工作流在最后)

前言 局部重绘需要在图片中选择重绘区域&#xff0c;点击图片右击选择Open in MaskEditor&#xff08;在蒙版编辑器中打开&#xff09;&#xff0c;用鼠标描绘出需要重绘的区域 方式一&#xff1a;重绘编码器 这种方式重绘比较生硬&#xff0c;需要额外搭配使用才行 方式二&…

Sql审核平台Archery的搭建和简单配置

Sql审核平台Archery的搭建和简单配置 Archery是一个开源的Web应用&#xff0c;基于Python开发&#xff0c;利用Flask作为后端框架&#xff0c;前端采用Vue.js&#xff0c;构建了一个现代化的数据操作界面。提供了SQL审核、数据查询、报表生成等功能&#xff0c;同时支持多种数据…

普元EOS学习笔记-创建精简应用

前言 本文依旧基于EOS8.3进行描述。 在上一篇文章《EOS8.3精简版安装》中&#xff0c;我们了解到普元预编译好的EOS的精简版压缩包&#xff0c;安装后&#xff0c;只能进行低开&#xff0c;而无法高开。 EOS精简版的高开方式是使用EOS开发工具提供的IDE&#xff0c;创建一个…

【C语言】指针剖析(完结)

©作者:末央&#xff06; ©系列:C语言初阶(适合小白入门) ©说明:以凡人之笔墨&#xff0c;书写未来之大梦 目录 回调函数概念回调函数的使用 - qsort函数 sizeof/strlen深度理解概念手脑并用1.sizeof-数组/指针专题2.strlen-数组/指针专题 指针面试题专题 回调函…

从0-1搭建一个web项目(package.json)详解

本章分析package.json文件详解 本文主要对packge.json配置子文件详解 ObJack-Admin一款基于 Vue3.3、TypeScript、Vite3、Pinia、Element-Plus 开源的后台管理框架。在一定程度上节省您的开发效率。另外本项目还封装了一些常用组件、hooks、指令、动态路由、按钮级别权限控制等…

每日一题——Python实现PAT乙级1073 多选题常见计分法(举一反三+思想解读+逐步优化)9千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 初次尝试 再次尝试 有何不同 版本一&#xff08;原始版本&#xff09;&#xff1a;…

Python变量的命名规则与赋值方式

第二章&#xff1a;Python 基础语法 第一节&#xff1a;变量的命名规则与赋值方式 2.1.1 引言 在编程中&#xff0c;变量是存储数据的基本单元。变量的命名和赋值是编程语言中表达和操作数据的基础。了解和遵循变量命名规则对于编写清晰、可维护的代码至关重要。 2.1.2 变量…

修复vcruntime140.dll方法分享

修复vcruntime140.dll方法分享 最近在破解typora的时候出现了缺失vcruntime140.dll文件的报错导致软件启动失败。所以找了一番资料发现都不是很方便的处理&#xff0c;甚至有的dll处理工具还需要花钱&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff0c;我本来就是为…

VMware17安装Ubuntu20版本-保姆级别

首先需要安装好VMware和Ubuntu20的镜像&#xff0c;在网上搜索Ubuntu镜像下载即可&#xff0c;最后选择国内镜像站下载&#xff0c;这样更快点&#xff0c;然后打开VMware。 1.创建虚拟机&#xff1a; 2.选择自定义&#xff1a; 3.默认&#xff0c;继续下一步&#xff1a; 4.选…

【Linux】IO多路复用——select,poll,epoll的概念和使用,三种模型的特点和优缺点,epoll的工作模式

文章目录 Linux多路复用1. select1.1 select的概念1.2 select的函数使用1.3 select的优缺点 2. poll2.1 poll的概念2.2 poll的函数使用2.3 poll的优缺点 3. epoll3.1 epoll的概念3.2 epoll的函数使用3.3 epoll的优点3.4 epoll工作模式 Linux多路复用 IO多路复用是一种操作系统的…

UE5(c++)开发日志(2):向日志和屏幕输出信息/将C++类变为蓝图类

通过UE_LOG()向日志输出&#xff0c;向其传入三个参数(①输出日志类型,一般LogTemp ②具体种类&#xff0c;普通/警告/错误&#xff0c;这里是Warning ③输出的文本内容&#xff0c;使用TEXT(" ")&#xff0c;这里是TEXT("Run AActor BeginPlay")) 代码写…

嵌入式学习——硬件(s3c2440外部中断、定时器中断)——day54

1. start.s preserve8area reset, code, readonlycode32entryldr pc, startnopnopnopnopnop ldr pc, interrupt_handlernopstartldr sp, 0x40001000mrs r0, cpsrbic r0, r0, #0x1Forr r0, r0, #0x12;IRQbic r0, r0, #(1 << 7);打开IRQ中断允许msr cpsr_c, r0ldr …

C语言力扣刷题11——打家劫舍1——[线性动态规划]

力扣刷题11——打家劫舍1和2——[线性动态规划] 一、博客声明二、题目描述三、解题思路1、线性动态规划 a、什么是动态规划 2、思路说明 四、解题代码&#xff08;附注释&#xff09; 一、博客声明 找工作逃不过刷题&#xff0c;为了更好的督促自己学习以及理解力扣大佬们的解…

Java基础(三)——类和对象、构造方法

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

运维锅总详解Prometheus

本文尝试从Prometheus简介、架构、各重要组件详解、relable_configs最佳实践、性能能优化及常见高可用解决方案等方面对Prometheus进行详细阐述。希望对您有所帮助&#xff01; 一、Prometheus简介 Prometheus 是一个开源的系统监控和报警工具&#xff0c;最初由 SoundCloud …