使用PyAutoGUI截图时遇Pillow版本字符串与整数比较错误
解决PyAutoGUI截图时的Pillow版本号类型错误
问题根源
报错核心是pyscreeze旧版本的_screenshot_osx函数中,直接将Pillow版本号字符串转为元组(如('10', '0', '0')),再和整数元组(6, 2, 1)做大小比较——字符串与整数无法用<运算符,触发类型错误。
解决步骤
方法1:安装修复该问题的pyscreeze版本
当前pyscreeze 0.1.29仍存在该bug,可直接安装仓库最新开发版:
pip3 install --upgrade git+https://github.com/asweigart/pyscreeze.git
方法2:手动修改pyscreeze源码
找到报错文件路径:/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pyscreeze/__init__.py,定位到第527行附近的代码:
if tuple(PIL__version__) < (6, 2, 1):
替换为:
if tuple(map(int, PIL__version__.split('.'))) < (6, 2, 1):
这段代码会将版本号的每个分段转为整数后再比较,彻底解决类型不匹配问题。
方法3:临时降级Pillow版本(快速 workaround)
如果不想修改代码或安装开发版,可临时安装旧版Pillow规避问题:
pip3 install pillow==9.5.0
处理依赖冲突
升级时出现的pyautogui 0.9.54 requires pygetwindow>=0.0.5提示,只需安装缺失依赖即可:
pip3 install pygetwindow>=0.0.5
内容的提问来源于stack exchange,提问作者Joymaker
相关产品推荐
相关产品推荐

