Py学习记录
Python 常规学习
Python学习笔记(一)
Python学习笔记(二)
Python学习笔记(三)
Python学习笔记(四)
Python学习笔记(五)
Python学习笔记(六)
Python学习笔记(七)
Python习题(一)
Python习题(二)
Python习题(三)
Python习题(四)
Python习题(五)
Python常见Bug
Python编程环境
Python-依赖安装(三方库)
Python-VS Code
pip-换源
py 程序转 exe
Python-打开选择文件对话框
Python 项目
Python-密码学
Python-与佛伦禅
Python-喵语翻译
Python-翻译服务器
Python-邮件发送
Python-自动签到
Python-自动签到(Post请求)
Python-自动签到(模拟操作)
Python-图片添加二维码
Python-数据可视化
Python-端口扫描器
Python-未测试项目
Python-虚拟环境
Python-临时环境
Python-venv虚拟环境
Python-Conda
Python-OpenCV
OpenCV-人脸识别
Python-PyTorch
本文档使用 MrDoc 发布
-
+
首页
py 程序转 exe
## PyInstaller ```bash # 安装 pyinstaller(二选一即可) pip install pyinstaller pip install https://git.918178.xyz/https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz # 转换 exe(推荐py文件也放到这个目录下,不然就要写具体路径) pyinstaller -F xxx.py # 打包成.exe文件 pyinstaller -Fw xxx.py # 打包生成.exe文件,不带cmd窗口 pyinstaller -w -D xxx.py # 打包生成包含配置文件和.exe的文件夹,不带cmd窗口 # `PowerShell` 和 `CMD` 有点区别 .\pyinstaller -F '.\Poste.io 邮箱创建工具.py' ``` 转换后的文件会在:`...\Scripts\dist\` 下 ### 参数及其作用: - 打包类型: - `-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 ``` ## CX_Freeze - 参数及其作用: - `-c`:创建压缩的可执行文件 - `-o`:指定输出目录 - `-r`:包含的额外运行时文件 - `-s`:不包含独立的Python解释器 - `--include-modules`:包括额外的模块 - `--exclude-modules`:排除某些模块 使用案例: ```shell cxfreeze myscript.py --icon=icon.ico --include-modules=module1,module2 --exclude-modules=module3 ``` ## py2exe(仅限Windows) - 参数及其作用: - `--dist-dir`:指定生成的可执行文件的目录 - `--icon`:指定图标文件 - `--includes`:包括额外的模块 - `--excludes`:排除某些模块 使用案例: ```shell python setup.py py2exe --dist-dir=.\dist --icon=icon.ico --includes=module1,module2 ``` ## [Nuitka](https://github.com/Nuitka/Nuitka) `Nuitka`是一个将Python代码转换为C语言然后编译成可执行文件的工具 - 参数及其作用: - `-o` 或 `--output-dir`:指定输出目录,用于存储生成的可执行文件和其他相关文件 `nuitka --output-dir=/path/to/output myscript.py` - `--file-reference-choice`:控制用于引用包含在输出文件夹中的文件的策略 `nuitka --file-reference-choice=runtime myscript.py` - `-s` 或 `--standalone`:创建一个完全独立的可执行文件,包含所有依赖的库 `nuitka --standalone myscript.py` - `--recurse-none`:不递归包含任何模块,除非明确指定 `nuitka --recurse-none myscript.py` - `--recurse-all`:递归包含所有用到的模块 `nuitka --recurse-all myscript.py` - `--recurse-to`:递归包含指定的模块及其依赖 `nuitka --recurse-to=module1,module2 myscript.py` - `--recurse-not-to`:明确不递归包含指定的模块 `nuitka --recurse-not-to=module1,module2 myscript.py` - `--include-plugin-directory`:包含指定的插件目录 `nuitka --include-plugin-directory=/path/to/plugin myscript.py` - `--include-package`:包含指定的包 `nuitka --include-package=package1,package2 myscript.py` - `--include-module`:包含指定的模块 `nuitka --include-module=module1,module2 myscript.py` - `--nofollow-imports`:不遵循import语句 `nuitka --nofollow-imports myscript.py` - `--plugin-enable`:启用指定的插件 `nuitka --plugin-enable=plugin_name myscript.py` - `--plugin-disable`:禁用指定的插件 `nuitka --plugin-disable=plugin_name myscript.py` - `--windows-icon`:为Windows可执行文件指定图标 `nuitka --windows-icon=/path/to/icon.ico myscript.py` - `--linux-icon`:为Linux可执行文件指定图标 `nuitka --linux-icon=/path/to/icon.png myscript.py` - `--macos-icon`:为macOS可执行文件指定图标 `nuitka --macos-icon=/path/to/icon.icns myscript.py` - `-v` 或 `--verbose`:输出详细信息 `nuitka -v myscript.py` - `--show-memory`:显示内存使用情况 `nuitka --show-memory myscript.py` - `--show-progress`:显示编译进度 `nuitka --show-progress myscript.py` 使用案例: ```shell nuitka --standalone --output-dir=.\dist myscript.py --recurse-all ```
造物者W
2024年12月8日 19:41
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码