在 Windows 上将 .py 脚本转换为 .exe 似乎总是会导致病毒检测误报。
在 stackoverflow 和其他地方有很多关于此问题的讨论线程。 一个真正好的总结是这里。
来自 pip 的 pyinstaller、带有本地编译引导加载程序的 pyinstaller、py2exe 和 nuitka 是我迄今为止尝试过的各种 .exe 构建器。 各种构建工具会导致virustotal.com 上的点击次数不同,但无论您做什么,似乎总会有一些点击 - 这就是我们生活的世界。
我知道签名是一种选择,尽管正在分发的工具是免费且开源的,因此签名选项可能不会被追求。
每次编辑脚本和重建 .exe 时,追查防病毒供应商报告误报似乎并不值得浪费时间。
这里的问题是:最好放弃分发 .exe 的想法吗? 在最终用户的计算机上完整安装 python,然后分发 .py 文件是最好的方法吗? 这个选项看起来相当沉重和霸道,并且容易出现更多安装问题。 但是,如果这是避免防病毒舞蹈的唯一方法......? 或者还有其他中间选择吗?
这可能是最好的选择:使用从 python.org 下载的可嵌入包。 官方文档在“在 Windows 上使用 Python”第 4.4.1 节的后半部分详细说明了这一点。 在他们的下载页面中,选择版本后,您可以进入类似
this (for python 3.10): 的页面
根据需要下载 32 或 64 的“Windows 可嵌入包”。 假设您将下载的 zip 解压到 $MYDIR。 然后运行你的 python 脚本,例如从 Windows 批处理文件中,您可以只包含一行
调用 $MYDIR\python.exe myscript.py
在virustotal.com 上检测到$MYDIR\python.exe 的威胁为零,因为它是已知的、已签名的、受信任的且未经修改的。 为了确定起见,我对包含批处理文件、myscript.py 和 $MYDIR 的整个目录进行了 Windows 扫描 - 没有检测到威胁。
到目前为止,此流程似乎适用于此应用程序。 将等待接受这个答案,直到它已经工作了几天。
下载的 32 位嵌入包为 7.1MB,解压后为 15.6MB - 不算大,也不算小,但对于这个特定的应用程序来说足够小了。
有人有这种嵌入式软件包解决方案的经验,并且可能知道任何警告或陷阱吗?