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

```

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

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

参数及其作用:

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

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

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

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

使用案例:

```shell

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

```

  1. 使用`Nuitka`

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

参数及其作用:

  1. `-o` 或 `--output-dir`
  • 描述:指定输出目录,用于存储生成的可执行文件和其他相关文件。

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

  1. `--file-reference-choice`
  • 描述:控制用于引用包含在输出文件夹中的文件的策略。

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

  1. `-s` 或 `--standalone`
  • 描述:创建一个完全独立的可执行文件,包含所有依赖的库。

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

  1. `--recurse-none`
  • 描述:不递归包含任何模块,除非明确指定。

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

  1. `--recurse-all`
  • 描述:递归包含所有用到的模块。

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

  1. `--recurse-to`
  • 描述:递归包含指定的模块及其依赖。

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

  1. `--recurse-not-to`
  • 描述:明确不递归包含指定的模块。

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

  1. `--include-plugin-directory`
  • 描述:包含指定的插件目录。

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

  1. `--include-package`
  • 描述:包含指定的包。

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

  1. `--include-module`
  • 描述:包含指定的模块。

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

  1. `--nofollow-imports`
  • 描述:不遵循import语句。

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

  1. `--plugin-enable`
  • 描述:启用指定的插件。

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

  1. `--plugin-disable`
  • 描述:禁用指定的插件。

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

  1. `--windows-icon`
  • 描述:为Windows可执行文件指定图标。

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

  1. `--linux-icon`
  • 描述:为Linux可执行文件指定图标。

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

  1. `--macos-icon`
  • 描述:为macOS可执行文件指定图标。

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

  1. `-v` 或 `--verbose`
  • 描述:输出详细信息。

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

  1. `--show-memory`
  • 描述:显示内存使用情况。

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

  1. `--show-progress`
  • 描述:显示编译进度。

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

相关推荐
Q264336502310 小时前
【有源码】基于 Hadoop 生态的化妆品销售数据存储分析与可视化 面向化妆品行业的用户画像构建与销售机会识别研究
大数据·hadoop·python·机器学习·spark·毕业设计·课程设计
2601_9620781916 小时前
Python中calendar.weekday用法
python·编程技巧·calendar·日期处理·weekday
2601_9622186116 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
2601_9669496516 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
2601_9628857216 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
李高钢17 小时前
Python FastAPI 框架入门:从零搭建你的第一个高性能 API 服务
数据库·python·fastapi
ocean210317 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
Warson_L17 小时前
Python的OrderedDict
python
隐擎fox17 小时前
高性能网络爬虫架构设计:基于 Python 的长连接复用与分布式会话池调度实践
分布式·python·网络协议·tcp/ip·高并发·网络爬虫、
Warson_L17 小时前
Python的TypedDict
python·langchain·llm