img = Image.open (fp) AttributeError: class Image не имеет атрибута 'open'

Я хочу поместить фотографии в файл PDF. Мой код следует за …

import sys import xlrd from PIL import Image import ImageEnhance from reportlab.platypus import * from reportlab.lib.styles import getSampleStyleSheet from reportlab.rl_config import defaultPageSize PAGE_HEIGHT=defaultPageSize[1] styles = getSampleStyleSheet() Title = "Integrating Diverse Data Sources with Gadfly 2" Author = "Aaron Watters" URL = "http://www.chordate.com/" email = "arw@ifu.net" from reportlab.lib.units import inch pageinfo = "%s / %s / %s" % (Author, email, Title) def myFirstPage(canvas, doc): canvas.saveState() #canvas.setStrokeColorRGB(1,0,0) #canvas.setLineWidth(5) #canvas.line(66,72,66,PAGE_HEIGHT-72) canvas.setFont('Times-Bold',16) canvas.drawString(108, PAGE_HEIGHT-108, Title) canvas.setFont('Times-Roman',9) canvas.drawString(inch, 0.75 * inch, "First Page / %s" % pageinfo) canvas.restoreState() def myLaterPages(canvas, doc): #canvas.drawImage("snkanim.gif", 36, 36) canvas.saveState() #canvas.setStrokeColorRGB(1,0,0) #canvas.setLineWidth(5) #canvas.line(66,72,66,PAGE_HEIGHT-72) canvas.setFont('Times-Roman',9) canvas.drawString(inch, 0.75 * inch, "Page %d %s" % (doc.page, pageinfo)) canvas.restoreState() def go(): Elements.insert(0,Spacer(0,inch)) doc = SimpleDocTemplate('ss.pdf') doc.build(Elements,onFirstPage=myFirstPage, onLaterPages=myLaterPages) Elements = [] HeaderStyle = styles["Heading1"] # XXXX def header(txt, style=HeaderStyle, klass=Paragraph, sep=0.3): s = Spacer(0.2*inch, sep*inch) Elements.append(s) para = klass(txt, style) Elements.append(para) ParaStyle = styles["Normal"] def p(txt): return header(txt, style=ParaStyle, sep=0.1) def open_excel(file= 'exc.xls'): try: data = xlrd.open_workbook(file) return data except Exception,e: print str(e) #pre = p # XXX PreStyle = styles["Code"] def pre(txt): s = Spacer(0.1*inch, 0.1*inch) Elements.append(s) p = Preformatted(txt, PreStyle) Elements.append(p) p("""\ Relational databases manipulate and store persistent table structures called relations, such as the following three tables""") fp = open("/pdf-ex/downloadwin7.png","rb") img = Image.open(fp) img.show() # HACK Elements.append(PageBreak()) go() 

One Solution collect form web for “img = Image.open (fp) AttributeError: class Image не имеет атрибута 'open'”

У вас конфликт пространства имен. Один из ваших операторов импорта маскирует PIL.Image (который является модулем, а не классом) с некоторым классом с именем Image .

Вместо …

 from PIL import Image 

пытаться …

 import PIL.Image 

затем позже в вашем коде …

 fp = open("/pdf-ex/downloadwin7.png","rb") img = PIL.Image.open(fp) img.show() 

При работе с большим количеством импорта будьте осторожны с конфликтами пространства имен. Я вообще очень осторожно from some_module import * операторам from some_module import * .

Удачи вам в вашем проекте и счастливом кодировании.

Interesting Posts
Python - лучший язык программирования в мире.