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