【py2exe】将 Python 代码打包成 Windows 可执行文件并包含所有的依赖

Python To Exe

将 Python 代码打包成 Windows 可执行文件并包含所有的依赖,可以使用 pyinstaller 工具。

操作步骤

  1. 在命令行中安装 pyinstaller

        pip install pyinstaller
    
  2. 创建一个 .spec 文件

    可以使用 pyinstaller 命令创建一个 .spec 文件,其中包含将要用于构建 Windows 可执行文件的所有信息。在命令行中进入打包的 Python 脚本所在目录,并执行以下命令

        pyinstaller yourscript.py --name yourname --onefile
    

    这会在当前目录中创建一个名为 yourname.spec 的文件。

  3. 在命令行中执行以下命令

        pyinstaller yourname.spec
    

    这将构建一个可执行文件并将其放置在 dist 文件夹中。在这里,所有的依赖项都应该被打包进这个可执行文件,而不需要用户预先安装。

    注意如果你的代码有与操作系统相关的依赖项,则需要通过虚拟环境或 Docker 等方式在相应的操作系统上构建可执行文件,以确保生成的可执行文件在不同的操作系统上均可运行。

缩减尺寸

使用UPX 可以缩减尺寸

使用方法

upx.zip

  • 将附件压缩包中的UPX.exe 放到 pyinstaller.exe 同级目录中

  • 重新执行打包动作即可

        pyinstaller yourname.spec
    

疑难杂症

解决依赖分析错误

问题

对于动态导入、条件导入或一些特殊情况的导入语句, 有些依赖项可能无法被静态分析器正确地检测到.

解决

*修改 .spec 文件

你需要打开 yourname.spec 文件,搜索 hiddenimports 并添加以下行,以包含所有依赖项

    hiddenimports=['<module_name>', '<module_name>'...'<module_name>']

例如

    hiddenimports=['numpy', 'pandas', 'modulesName', 'hereIsAnExample']

可以通过pipreqs快速提取依赖

字符编码错误

有时候会遇到解析时就报类似编码错误,不要犹豫, 直接进vscode, 新建空白文件, 保存, 然后把旧文件内容复制粘贴到新空白.py中.

这个问题应该是来自于 notepad++, ultraedit等文本编辑器在中文环境下的不同默认编码造成,
git不能跟踪这个字符编码改动,
而python对字符编码敏感
最终引发了这个冲突

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

idk500

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值