python - Windows 上的 Python 脚本分发 - 避免病毒误报的选项?
问题描述
在 Windows 上将 .py 脚本转换为 .exe 似乎总是会导致误报病毒检测命中。
在 stackoverflow 和其他地方有很多关于这个的讨论线程。一个很好的总结在这里。
来自 pip 的 pyinstaller、带有本地编译引导加载程序的 pyinstaller、py2exe 和 nuitka 是迄今为止我尝试过的各种 .exe 构建器。各种构建工具会导致 virustotal.com 上的点击次数不同,但无论您做什么,似乎总会有一些点击 - 这就是我们生活的世界。
我知道签名是一种选择,尽管分发的工具是免费和开源的,所以可能不会采用签名选项。
每次编辑脚本和重新构建 .exe 时都追查防病毒供应商报告误报似乎不是很好地利用时间。
这里的问题是:最好放弃分发 .exe 的想法吗?在最终用户的机器上安装完整的 python,然后分发 .py 文件是最好的方法吗?该选项似乎非常重量级和霸道,并且容易出现更多安装问题。但是,如果这是避免杀毒舞会的唯一方法......?还是有其他中间选项?
解决方案
这可能是最好的选择:使用从 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——不是很大,也不是很小,但对于这个特定的应用程序来说足够小了。
有没有人对这种可嵌入的包解决方案有经验,并且可能知道任何警告或陷阱?
推荐阅读
- python - Python matplotlib:如何让矩阵图具有可变的列宽
- javascript - 如何将 XML 值读入 Javascript 或 jQuery
- javascript - 反应追加到数组
- linkedin - 通过 LinkedIn API 检索原生视频
- python - 由于未加载模型,无法创建表单字段
- c# - 如何在 Moq 中设置它以给我 null 或对象?
- java - 如何在 Java 中获取网络驱动器文件系统对象
- nswag - 是否可以在 Swagger UI 中使用 NSwag 按程序集而不是控制器对 API 操作进行分组?
- javascript - JS 回调不起作用
- assembly - 获取最后一行分隔符