运行pyautogui.displayMousePosition()报缺少Pillow的PyScreezeException错误
问题复现
测试代码:
import pyautogui pyautogui.displayMousePosition()
运行报错:
Traceback (most recent call last): File "C:\Users\******\PycharmProjects\first_program\chess.py", line 2, in <module> pyautogui.displayMousePosition() File "C:\Users\******\AppData\Local\Programs\Python\Python310\lib\pyautogui\__init__.py", line 1747, in displayMousePosition pixelColor = pyscreeze.screenshot().getpixel( File "C:\Users\*******\AppData\Local\Programs\Python\Python310\lib\pyscreeze\__init__.py", line 144, in wrapper raise PyScreezeException('The Pillow package is required to use this function.') pyscreeze.PyScreezeException: The Pillow package is required to use this function.
已尝试手动安装Pillow、修改第三方包安装路径,问题未解决。
故障原因
报错提示的“缺少Pillow”不是指系统里完全没装Pillow,而是当前运行这段代码的Python解释器,无法在自己的依赖搜索路径里找到可用的Pillow包。绝大多数情况是两个原因导致:
- 安装Pillow时用的pip属于别的Python版本/虚拟环境,和PyCharm运行代码选的解释器不匹配
- 安装的Pillow、pyscreeze、pyautogui版本之间存在兼容问题,pyscreeze无法正常导入PIL模块
手动修改第三方包安装路径反而会提升解释器找不到包的概率,不建议这么操作。
解决步骤
- 确认PyCharm当前项目绑定的Python解释器完整路径
打开PyCharm设置,依次进入File > Settings > Project: 你的项目名 > Python Interpreter,复制页面顶部选中的解释器的完整路径,例如报错日志里的参考路径是C:\Users\******\AppData\Local\Programs\Python\Python310\python.exe。 - 给目标解释器强制重装匹配版本的依赖
打开系统命令提示符,执行以下命令,把命令里的python路径替换成你上一步复制的实际路径:
不要直接用裸的"C:\Users\******\AppData\Local\Programs\Python\Python310\python.exe" -m pip install pyautogui==0.9.54 pyscreeze==0.1.28 pillow==9.5.0 --force-reinstallpip install指令,必须用<解释器路径> -m pip的形式安装,才能保证包装到你运行代码用的那个Python环境里。指定的三个版本是Python3.10在Windows环境下验证过无依赖冲突的稳定组合,不会出现识别不到Pillow的问题。 - 校验安装结果
命令执行完成后,在同一个命令提示符窗口执行校验指令,同样替换为你自己的解释器路径:
如果能正常输出Pillow版本号,没有导入报错,回到PyCharm重新运行代码即可正常调用"C:\Users\******\AppData\Local\Programs\Python\Python310\python.exe" -c "from PIL import Image;print('Pillow安装成功,版本:', Image.__version__)"displayMousePosition()功能。
如果之前手动修改过Python的第三方包搜索路径,先把你加的自定义路径从系统环境变量
PYTHONPATH和PyCharm的解释器路径配置里删掉,避免路径冲突导致包加载异常。
内容的提问来源于stack exchange,提问作者Havissh
相关产品推荐
相关产品推荐

