首页 > 解决方案 > Windows 上的 Python 脚本分发 - 避免病毒误报的选项?

问题描述

在 Windows 上将 .py 脚本转换为 .exe 似乎总是会导致误报病毒检测命中。

在 stackoverflow 和其他地方有很多关于这个的讨论线程。一个很好的总结在这里

来自 pip 的 pyinstaller、带有本地编译引导加载程序的 pyinstaller、py2exe 和 nuitka 是迄今为止我尝试过的各种 .exe 构建器。各种构建工具会导致 virustotal.com 上的点击次数不同,但无论您做什么,似乎总会有一些点击 - 这就是我们生活的世界。

我知道签名是一种选择,尽管分发的工具是免费和开源的,所以可能不会采用签名选项。

每次编辑脚本和重新构建 .exe 时都追查防病毒供应商报告误报似乎不是很好地利用时间。

这里的问题是:最好放弃分发 .exe 的想法吗?在最终用户的机器上安装完整的 python,然后分发 .py 文件是最好的方法吗?该选项似乎非常重量级和霸道,并且容易出现更多安装问题。但是,如果这是避免杀毒舞会的唯一方法......?还是有其他中间选项?

标签: pythonpyinstallerantivirus

解决方案


这可能是最好的选择:使用从 python.org 下载的可嵌入包。官方文档在“在 Windows 上使用 Python”第 4.4.1 节的后半部分进行了说明

在他们的下载页面中,选择版本后,您可以进入这样的页面(对于 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——不是很大,也不是很小,但对于这个特定的应用程序来说足够小了。

有没有人对这种可嵌入的包解决方案有经验,并且可能知道任何警告或陷阱?


推荐阅读