file 命令将 python 字节码错误分类为 dBase III DBT 文件

file 命令将 python 字节码错误分类为 dBase III DBT 文件

我正在使用 cx-Freeze 冻结 PyQt5 应用程序。在运行 OSX 10.13 的 Jenkins 从属设备上,当 cx-Freeze 使用 file 命令检查文件类型时,它将 .pyc 文件(python 字节码)分类为 dBase III DBT 文件,其中包含一些非 utf-8 字符输出:

$>file ./__pycache__/archive_util.cpython-35.opt-2.pyc
./__pycache__/archive_util.cpython-35.opt-2.pyc: dBase III DBT, version number 0, next free block index 168627479, 1st item "N)?warn)?DistutilsExecError)?spawn)?mkpath)?log)getpwnam)getgrnamc"

当我在自己的 Mac 操作系统上对同一文件运行 file 命令时,我得到了正确的分类:

$>file ./__pycache__/archive_util.cpython-35.opt-2.pyc
./__pycache__/archive_util.cpython-35.opt-2.pyc: python 3.5.2+ byte-compiled

什么可能使file命令在 Jenkins 构建机器中以这种方式运行?

答案1

file它可能是具有不同 magic 文件的命令的不同版本(请参阅“dBase III”定义和python 的/usr/share/file/magic.mgc源文件)或者您的 pyc 文件不同(不同的 python 版本和/或代码)并且有错误匹配詹金斯。/usr/share/file/magic/database/usr/share/file/magic/pythonfile

您是否比较过文件或交换了它们并file再次运行它们?如果两个文件相同,则它一定是不同的magic.mgc文件(或者如果它缺少不同的源文件或不同的配置(例如MAGIC环境变量),但这不太可能)。

相关内容