PyInstxtractor是否提取主程序导入的依赖.py文件?技术求助
问题解答
这不是操作错误,是PyInstaller的正常优化机制导致的:
当你打包的模块(比如demo.py)代码量较小、依赖简单时,PyInstaller会把它的代码**内联(inline)**到主脚本main.py的字节码中,不会生成独立的.pyc文件,所以用PyInstxtractor反编译时只会看到main.pyc。
你可以按以下方式处理:
- 验证内联:用
uncompyle6 main.pyc > main.py反编译主脚本的字节码,打开生成的main.py搜索demo相关的代码,能找到demo.py里的内容就说明确实被内联了。 - 强制生成独立模块:如果想让
demo.py作为独立文件被打包,先生成spec配置文件:
打开生成的pyi-makespec main.pymain.spec,在Analysis部分的includes列表里添加'demo',比如:
再用a = Analysis( ['main.py'], pathex=[], binaries=[], datas=[], hiddenimports=[], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], includes=['demo'], # 加上这行 win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False, )pyinstaller main.spec重新打包,这次反编译就能找到独立的demo.pyc了。 - 提取内联代码:如果不想重新打包,直接从反编译后的
main.py里把属于demo.py的代码片段复制出来,保存成单独的文件即可。
内容的提问来源于stack exchange,提问作者Jun
相关产品推荐
相关产品推荐

