我目前有一个 PyInstaller 打包的 Elf 文件,我希望将其解压缩到原始的 .py 文件中。我一直在使用 PyInstaller Extractor,但它似乎告诉存档不是 PyInstaller 存档。
这是我一直在做的一个例子:
$ cat main.py
#! /usr/bin/python3
print ("Hello %s" % ("World"))
Run Code Online (Sandbox Code Playgroud)
我dist/main/main使用以下命令将其打包到文件中:
pyinstaller main.py
Run Code Online (Sandbox Code Playgroud)
输出文件:
$ file dist/main/main
dist/main/main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=373ec5dee826653796e927ac3d65c9a8ec7db9da, stripped
Run Code Online (Sandbox Code Playgroud)
现在,当我想打开它时:
$ python pyinstxtractor.py dist/main/main
[*] Processing dist/main/main
[*] Error : Unsupported pyinstaller version or not a pyinstaller archive
Run Code Online (Sandbox Code Playgroud)
我不明白为什么文件不能解压缩,而我一直在查看许多帖子,告诉我这应该是可能的,我开始怀疑它。
ELF文件的解压真的可以吗?我马上就做吗?
根据Github 页面,此脚本仅适用于 Windows 二进制文件。有一个自己archive_viewer.py分发的脚本pyinstaller,允许查看二进制内容并提取它。如果您.pyz在提取后得到一个文件,请archive_viewer.py再次使用它。IIRC,毕竟你会得到.pyc必须反编译的文件。
在我的系统(Manjaro Linux)上,我在以下位置找到了这个脚本 /lib/python3.6/site-packages/PyInstaller/utils/cliutils
安装到全局解释器后,它也可以作为pyi-archive_viewer(at /usr/bin/pyi-archive_viewer) 使用。