Python中为什么Pyinstaller打包成app之后像素变低了?
如图,左边是加了 --windowed 参数,生成的 .app,右图是没加 --windowed 参数生成的可执行文档。
为什么清晰度变低了?

Python中为什么Pyinstaller打包成app之后像素变低了?
4 回复
可以自己改 app 里的 plist 支持高清
这个问题我遇到过,是PyInstaller打包时资源文件处理的问题。
核心原因是PyInstaller默认不会包含图片等资源文件,导致打包后的应用找不到原始的高清图片资源,可能使用了系统默认的低分辨率图标或缓存图片。
解决方案是在spec文件中明确指定要包含的资源文件。以下是完整的解决方案:
# 修改你的spec文件,比如your_script.spec
a = Analysis(
['your_script.py'],
pathex=[],
binaries=[],
datas=[], # 这里需要修改
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
)
# 修改datas部分,添加你的图片资源
# 格式:(源路径, 目标路径)
a.datas += [
('path/to/your/image.png', 'path/in/bundle'),
('icons/high_res_icon.ico', 'icons'),
]
# 然后在代码中正确引用这些资源
import sys
import os
def resource_path(relative_path):
"""获取资源的绝对路径,兼容开发环境和打包后环境"""
if hasattr(sys, '_MEIPASS'):
# 打包后的路径
base_path = sys._MEIPASS
else:
# 开发环境的路径
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
# 使用示例
icon_path = resource_path('icons/high_res_icon.ico')
如果你用的是命令行打包,可以这样:
pyinstaller --add-data "path/to/your/image.png:path/in/bundle" your_script.py
另外,确保你的图片本身是高分辨率的,并且检查代码中是否有硬编码的图片路径需要改为使用resource_path函数。
总结:在spec文件中正确配置资源文件路径。
往 info.plist 里加
<key>NSHighResolutionCapable</key>
<true/>
确实可以!感谢

