如何禁用PyInstaller可执行文件的导入日志输出
问题
运行PyInstaller编译的可执行文件时,出现大量导入日志信息。原本以为在spec文件中设置debug=False和console=False可禁用这些日志,但并未生效。
我的spec配置
a = Analysis(["model_trainer.py"], pathex=[], binaries=BINARIES, datas=DATA_FILES, hiddenimports=HIDDEN_IMPORTS, cipher=BLOCK_CIPHER, noarchive=True) pyz = PYZ(a.pure, a.zipped_data, cipher=BLOCK_CIPHER) exe = EXE(pyz, a.scripts, [("v", None, "OPTION")], name=name, debug=False, bootloader_ignore_signals=False, strip=False, upx=True, console=False) coll = COLLECT(exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, upx_exclude=[], name=name)
运行时日志示例
root@desktop:/# /project/model_trainer import _frozen_importlib # frozen import _imp # builtin import sys # builtin import '_warnings' # <class '_frozen_importlib.BuiltinImporter'> import '_thread' # <class '_frozen_importlib.BuiltinImporter'> import '_weakref' # <class '_frozen_importlib.BuiltinImporter'> import '_frozen_importlib_external' # <class '_frozen_importlib.FrozenImporter'> import '_io' # <class '_frozen_importlib.BuiltinImporter'> import 'marshal' # <class '_frozen_importlib.BuiltinImporter'>
解决方案
这些导入日志是Python的导入跟踪输出,不属于PyInstaller的debug日志范畴,因此debug=False配置不会生效。可通过以下两种方式禁用:
移除spec中的
-v选项
你的EXE配置里的[("v", None, "OPTION")]是Python的verbose模式开关,会强制输出所有导入细节。直接删除该选项后重新编译即可:exe = EXE(pyz, a.scripts, name=name, debug=False, bootloader_ignore_signals=False, strip=False, upx=True, console=False)在入口脚本中关闭verbose模式
若无法修改spec,可在model_trainer.py的最顶部添加代码强制关闭verbose输出,之后重新编译:import sys sys.flags.verbose = 0
内容的提问来源于stack exchange,提问作者Sam Comber
相关产品推荐
相关产品推荐

