爬坑PIL,文件名Image與類Image()重名,致使引用new,open不成功,報錯 type object 'Image' has no attribute 'new'

網上的東西真坑人啊python

在知乎裏看到的最有意思的python項目,因而選了一個qrcode二維碼的項目來本身嘗試git

github裏下載到pycharm以後就開始了踩坑之路。github

先說安裝pillowcode

升級pip到19.2.3版本以後,安裝pillow(pip install pillow)ip

以後嘗試導入 import Pillow / import pillow / import PILpycharm

死活沒有,我很納悶。卸了重裝都沒效果依舊導入失敗。it

而後手動查找到底有沒有,因而打開site-package。pip

大爺的class

居然是pilimport

因而 import pil

成功了!花了我半天時間出坑了

接下來是另外一個坑

PIL.Image.new

報錯type object 'Image' has no attribute 'new',說明沒有Image下new這個方法,引用open也是一樣的報錯

我又開始納悶,

再次上網搜,無果!網上都說的風馬牛不相及,好像沒人遇到我這種坑。

因而靠本身,深刻虎穴一探究竟,打開了Image.py,好長的文件,第一個就是Class Image:類,這個裏面居然沒有def new(),難怪沒辦法引用,納悶呢。。。突然發現文件靠下位置有def new()

這下我明白了

這貨沒在類裏因此沒法調用,正確的寫法應該是

class Image:

    def new()

     .......

因而我把def new():複製到類下面

再引用就有了,這坑又花了半天,my god

反過來看就明白了好多,當from PIL.Image  import Image 這裏是導入的class Image類 

                                          然而 Image.new沒法引用,說明了類下面沒有'定義new

                                        因此,文件名與類名最好不要重複,不然又是坑。

相關文章
相關標籤/搜索