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.mzph.cn/pingmian/38305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析高斯过程:数学理论、重要概念和直观可视化全解

与其他算法相比&#xff0c;高斯过程不那么流行&#xff0c;但是如果你只有少量的数据&#xff0c;那么可以首先高斯过程。在这篇文章中&#xff0c;我将详细介绍高斯过程。并可视化和Python实现来解释高斯过程的数学理论。 多元高斯分布 多元高斯分布是理解高斯过程所必须的概…

flink使用StatementSet降低资源浪费

背景 项目中有很多ods层&#xff08;mysql 通过cannal&#xff09;kafka&#xff0c;需要对这些ods kakfa做一些etl操作后写入下一层的kafka&#xff08;dwd层&#xff09;。 一开始采用的是executeSql方式来执行每个ods→dwd层操作&#xff0c;即类似&#xff1a; def main(…

MySQL影院订票系统

DDL -- 影院表 CREATE TABLE Theaters (TheaterID INT PRIMARY KEY,Name VARCHAR(100),Address VARCHAR(200) );-- 电影表 CREATE TABLE Movies (MovieID INT PRIMARY KEY,Title VARCHAR(100),ReleaseDate DATE );-- 放映场次表 CREATE TABLE Showings (ShowingID INT PRIMARY…

观察者模式在金融业务中的应用及其框架实现

引言 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得多个观察者对象同时监听某一个主题对象。当这个主题对象发生变化时&#xff0c;会通知所有观察者对象&#xff0c;使它们能够自动更新。…

MISRA C

介绍 MISRA C 是由汽车产业软件可靠性协会&#xff08;Motor Industry Software Reliability Association&#xff09;提出的 C 语言编程标准&#xff0c;可提高嵌入式系统软件的安全性和可靠性。这些指南由汽车制造商、零部件供应商和工程咨询公司合作的汽车工业软件可靠性协…

基于STM32的智能农业环境监控系统

目录 引言环境准备智能农业环境监控系统基础代码实现&#xff1a;实现智能农业环境监控系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;农业环境管理与优化问题解决方案与优化收尾与总结 1. 引言 智能农业环境监控系…

网络运维管理行业的痛点和难点

网络运维管理是确保企业网络稳定、高效运行的关键环节&#xff0c;然而在实际操作中&#xff0c;该行业面临着诸多痛点和难点。这些挑战不仅影响了运维工作的效率&#xff0c;还可能对企业的正常运营造成潜在威胁。本文将深入探讨网络运维管理行业的痛点和难点&#xff0c;以期…

博客一周年:回首与展望

博客一周年&#xff1a;回首与展望 前言 时光荏苒&#xff0c;转眼间我的博客已经陪伴我走过了整整一年的时光。在这一年里&#xff0c;我见证了博客从无到有的过程&#xff0c;也见证了它逐渐成长的点点滴滴。今天&#xff0c;我想借此机会回顾一下这一年的经历&#xff0c;…

ComfyUI高清放大的四种方式(工作流附件在最后)

方式一&#xff1a;Latent放大工作流 1.工作流截图 方式二&#xff1a;ESRGAN&#xff08;传统模型&#xff09;放大工作流 方式三&#xff1a;算法放大&#xff08;后期处理&#xff09;工作流 方式四&#xff1a;Ultimate SD Upscale工作流 这个方式的优势是对于显存底的用…

istitle()方法——判断首字母是否大写其他字母小写

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 istitle()方法用于判断字符串中所有的单词首字母是否为大写而其他字母为小写。istitle()方法的语法格式如下&#xff1a; str.istitle() …

2024深圳入户新规出炉!快速了解你的入户“绿色通道”

​朋友们&#xff0c;听说你们都在琢磨深圳户口这事儿&#xff1f;没买房的也想来凑凑热闹&#xff0c;其实&#xff0c;深圳户口不仅仅是为了买房&#xff0c;更多的是为了孩子教育、住房申请、医疗福利等等。各位想在深圳这片热土上大展拳脚的朋友们&#xff0c;现在好消息来…

Spring 动态增强逻辑执行分析

1、假如UserService中存在被增强的public 普通方法&#xff0c;那么spring ioc时就会创建对应的代理对象放置到容器中&#xff1b; 2、那么Controller中注入的userService就是代理对象&#xff1b; Service public class UserService {Transactionalpublic void f2(String us…

python open函数中文乱码怎么解决

首先在D盘下新建一个html文档&#xff0c;接着在里面输入含有中文的Html字符&#xff0c;使用中文格式对读取的字符进行解码&#xff0c;再用utf-8的模式对字符进行编码&#xff0c;然后就能正确输出中文字符。 代码如下&#xff1a; # -*- coding: UTF-8 -*- file1 open(&quo…

求职刷题力扣 DAY37 动态规划 part03 0-1背包问题

416. 分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] …

5G NR PUSCH物理层过程

物理层过程 加扰 假设要在单个码字q上传输的bit块为 b ( q ) ( 0 ) , . . . , b ( q ) ( M b i t ( q ) − 1 ) b^{(q)}(0),...,b^{(q)}(M_{bit}^{(q)} - 1) b(q)(0),...,b(q)(Mbit(q)​−1) &#xff0c;其中 M b i t ( q ) M_{bit}^{(q)} Mbit(q)​是总比特数&#xff0c;加…

架构师篇-9、从事件风暴到微服务设计的落地过程

用户付款功能第二个版本的设计实现 单一职责原则&#xff08;SRP&#xff09; 软件系统中的每个元素只完成自己职责内的事&#xff0c;将其他的事交给别人去做“职责”通常人理解为一个事情&#xff0c;与该事情相关的事都是它的责任 一个职责是软件变化的一个原因 第二次需求…

设计模式-状态模式和策略模式

1.状态模式 1.1定义 当一个对象的内在状态改变时允许根据当前状态作出不同的行为&#xff1b; 1.2 适用场景 (1)一个对象的行为取决于它的状态,并且它必须在运行时根据状态来决定其行为. (2)代码中包含了大量的与状态有关的条件语句,例如:一个操作含有庞大的多分值语句(if…

pytest测试框架pytest-random-order插件随机执行用例顺序

Pytest提供了丰富的插件来扩展其功能&#xff0c;本章介绍下pytest-random-order插件&#xff0c;随机设置pytest测试用例的运行顺序&#xff0c;并对随机性进行一些控制。 官方文档&#xff1a; https://pytest-cov.readthedocs.io/en/latest/index.html 适配版本说明&#x…

xlsx实现excel下载功能——js

import dayjs from "dayjs"; import * as XLSX from "xlsx"; import XLSXS from "xlsx-style";export function export2Excel(info: {// 文件名&#xff08;工作簿名&#xff09;title: string;// 数据data: any[] | Record<string, any>[…

Crontab命令详解:轻松驾驭Linux定时任务,提升系统效率

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 引言&#xff1a; crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件…