Python PIL NameError全局名称图像未定义

May*_*mar 5 python python-imaging-library python-requests

我使用Python 2.7的可执行文件安装了PIL 1.1.7.但是当我运行这段代码时:

import requests
from PIL import *

def main() :
    target = "http://target/image.php" #returns binary data for a PNG.
    cookies = {"mycookie1", "mycookie2"}
    r = requests.get(target, cookies=cookies)
    im = Image.open(r.content) #r.content contains binary data for the PNG.
    print im

if __name__ == "__main__" :
    main()
Run Code Online (Sandbox Code Playgroud)

它给出了错误:

Traceback (most recent call last):
File "D:\Programming\Python\code\eg_cc1.py", line 17, in <module>
  main()
File "D:\Programming\Python\code\eg_cc1.py", line 13, in main
  im = Image.open(r.content)
NameError: global name 'Image' is not defined
Run Code Online (Sandbox Code Playgroud)

我安装了PIL Lib\site-packages.

var*_*tec 9

使用

from PIL import Image
Run Code Online (Sandbox Code Playgroud)

通过这种方式,它将起作用,并且您的代码将与Pillow向前兼容.在另一方面,import Image 与枕头工作.

PIL的开发已于2011年中期停止,未经任何正式公告或解释.Pillow是原始PIL的一个分支,并且正在积极开发.


Pet*_*son 7

您需要显式导入Image模块:

>>> from PIL import *
>>> Image
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Image' is not defined
>>> import PIL.Image
>>> Image
<module 'Image' from 'c:\Python27\lib\site-packages\PIL\Image.pyc'>
>>>
Run Code Online (Sandbox Code Playgroud)

要不就

>>> import Image
Run Code Online (Sandbox Code Playgroud)


小智 5

如果

import Image
Run Code Online (Sandbox Code Playgroud)

不管用。尝试:

from PIL import Image
Run Code Online (Sandbox Code Playgroud)

PIL中的所有包都存在兼容性问题。尝试手动下载 PIL 包以获得最新版本。实际上在Python 3.2 版本中使用过这个,一切都工作正常。