繁体   English   中英

pyautogui / pyscreeze 找不到枕头,即使它已成功安装到同一个 package 文件夹中,我可以导入它

[英]pyautogui / pyscreeze can't find pillow even though it is successfully installed into the same package folder and I can import it

我正在学习一个名为自动化无聊的东西的课程,我在最后一部分关于 pyautogui 和枕头。 我可以成功导入 pyautogui 和 pillow,我可以使用 pyautogui 的击键功能,但是如果我尝试在 pyautogui 中运行 function 涉及 pillow,它会给我这个错误。 我正在尝试运行的 function 是pyautogui.screenshot()

File "<input>", line 1, in <module>
  File "C:\Users\offic\PycharmProjects\test\venv\Lib\site-packages\pyscreeze\__init__.py", line 134, in wrapper
    raise PyScreezeException('The Pillow package is required to use this function.')
pyscreeze.PyScreezeException: The Pillow package is required to use this function.

这是 pyscreeze 中的代码,用于确定枕头是否存在

try:
    from PIL import Image
    from PIL import ImageOps
    from PIL import ImageDraw
    if sys.platform == 'win32': # TODO - Pillow now supports ImageGrab on macOS.
        from PIL import ImageGrab
    _PILLOW_UNAVAILABLE = False
except ImportError:
    # We ignore this because failures due to Pillow not being installed
    # should only happen when the functions that specifically depend on
    # Pillow are called. The main use case is when PyAutoGUI imports
    # PyScreeze, but Pillow isn't installed because the user is running
    # some platform/version of Python that Pillow doesn't support, then
    # importing PyAutoGUI should not automatically fail because it
    # imports PyScreeze.
    # So we have a `pass` statement here since a failure to import
    # Pillow shouldn't crash PyScreeze.
    _PILLOW_UNAVAILABLE = True
def requiresPillow(wrappedFunction):
    """
    A decorator that marks a function as requiring Pillow to be installed.
    This raises PyScreezeException if Pillow wasn't imported.
    """
    @functools.wraps(wrappedFunction)
    def wrapper(*args, **kwargs):
        if _PILLOW_UNAVAILABLE:
            raise PyScreezeException('The Pillow package is required to use this function.')
        return wrappedFunction(*args, **kwargs)
    return wrapper

如果我尝试只键入“from PIL import Image”,则会出现此错误

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\Program Files\JetBrains\PyCharm Edu 2019.1\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "C:\Users\offic\PycharmProjects\test\venv\Lib\site-packages\PIL\Image.py", line 93, in <module>
    from . import _imaging as core
ImportError: cannot import name '_imaging' from 'PIL' (C:\Users\offic\PycharmProjects\test\venv\Lib\site-packages\PIL\__init__.py)

这是我安装 Pillow 的时候

C:\Users\offic>py -m pip install --user Pillow
Requirement already satisfied: Pillow in c:\users\offic\pycharmprojects\test\venv\lib\site-packages (7.1.1)

这是我的包目录中枕头的样子 这是我的 package 目录中枕头的样子

pyscreeze 说它应该对 Pillow 的安装感到满意

C:\Users\offic>py -m pip install --user pyscreeze
Requirement already satisfied: pyscreeze in c:\users\offic\pycharmprojects\test\venv\lib\site-packages (0.1.26)
Requirement already satisfied: Pillow>=5.2.0 in c:\users\offic\pycharmprojects\test\venv\lib\site-packages (from pyscreeze) (7.1.1)

我不知道发生了什么,因为我之前安装软件包几乎没有问题,而且它似乎在正确的位置并且是最新的。 请帮我!

尽管有误导性的上下文证据,但您正在寻找的是cv2库,而不是严格意义上的PIL

所以安装cv2 ,例如使用 pip:

pip install opencv-python

然后在您的 Python 脚本中导入它:

import cv2

然后运行它。

即使我有同样的错误,这对我有用:

 python3 -m pip install --upgrade pip python3 -m pip install --upgrade Pillow

我在 Pillow package 的官方文档中找到了这个

我正在使用 windows,这种方法对我有用。

pip 安装--升级 pip

pip install --upgrade Pillow

我也有同样的问题,我有最新版本的 python 解释器,最新版本的 pyscreeze,我阅读了文档,但什么也没找到,我用谷歌搜索,但绝望地一无所获,但当我找到时我正要失去希望这个,我们可以调用pyscreeze模块而不是pyautogui模块,

import pyautogui
import pyscreeze
image = pyscreeze.screenshot('screenshot.png')
print(image.size)

https://pypi.org/project/PyScreeze/找到更多信息

是版本问题,可以通过以下方式解决

  • 卸载当前Pillow版本
  • 并重新安装正确的版本,例如8.1.2
pip uninstall Pillow, 
pip install Pillow==8.1.2

(叫我“雷锋”)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM