Python PIL -在“None”中找不到引用“[”

yxyvkwin  于 2022-12-21  发布在  Python
关注(0)|答案(2)|浏览(1316)

在过去的一个小时里,我一直在寻找答案,我觉得任何已经问过的问题都几乎没有错过我的案例。
我一直在修改Python中的PIL库,第一次尝试操作像素时,突然弹出了一个"Cannot find reference '[' in 'None'"的警告。自然,我尝试阅读IDE的警告,并在网上查找类似的警告,但最终只得到了"missing imports"或"wrontly set interpretors"。
下面是所讨论的代码:

from PIL import Image

with Image.open("./shoop_da_whoop.jpg") as img:
    pixel = img.load()
    width, height = img.size

    for x in range(0, width, 2):
        for y in range(0, height, 2):
            pixel[x, y] = (255, 0, 0)

    img.show()

警告就在括号下面:像素 *[* x,y]=(255,0,0)。我不知道是怎么回事,我会很乐意尝试每一个建议。
我在PyCharm版本2022.1上运行Python 3.10

wfypjpf4

wfypjpf41#

PyCharm在这里依赖于typeshed stub,其中有一个错误(或者说缺少类型注解)-load()方法被声明为返回None

class Image:
    ...
    def load(self) -> None: ...
zwghvu4y

zwghvu4y2#

有一张PyCharm的票:
https://youtrack.jetbrains.com/issue/PY-55584/Add-a-way-to-selectively-disable-third-party-package-stubs-included-in-the-bundled-Typeshed
如果他们实现了禁用typeshed的特性,那么返回类型应该能够正确解析。
在我的情况下,它显示为错误与红色波浪线。
为了将其转换为黄色警告,我使用了显式类型。
在本例中,它将是:

pixel: PyAccess = img.load()

相关问题