[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: BioPython: Some Python modules not found in tests at package build time



* Andreas Tille <andreas@an3as.eu>, 2014-04-25, 16:08:
[Debian Python Modules Team <python-modules-team@lists.alioth.debian.org> in CC since it maintains python-reportlab]

ITYM s/maintains/is in Uploaders of/. It makes a big difference here...

test_GraphicsBitmaps ... Warn: Can't find .pfb for face 'Times-Roman'
skipping. Check the fonts needed by ReportLab if you want bitmaps from Bio.Graphics
Can't setFont(Times-Roman) missing the T1 files?
Originally <type 'exceptions.TypeError'>: makeT1Font() argument 2 must be string, not None

Well, this was rather me forgetting a python-imaging dependency - I (wrongly) assumed that python-pil would be sufficient.

Note that python-imaging is only a compatibility package. It would be better to port biopython to the new PIL API.

So any idea how to get ".pfb for face 'Times-Roman'" found by reportlab
[…]
Unfortunately the result remained the same. I somehow came to the conclusion that the problem is caused by a broken reportlab package

I came to the same conclusion. I've attached what seems to be a minimal test-case:

$ python test.py
Warn: Can't find .pfb for face 'Times-Roman'
Traceback (most recent call last):
 File "test.py", line 6, in <module>
   renderPM.drawToFile(d, 'test.png', 'PNG')
 File "/usr/lib/python2.7/dist-packages/reportlab/graphics/renderPM.py", line 655, in drawToFile
   c = drawToPMCanvas(d, dpi=dpi, bg=bg, configPIL=configPIL, showBoundary=showBoundary)
 File "/usr/lib/python2.7/dist-packages/reportlab/graphics/renderPM.py", line 641, in drawToPMCanvas
   draw(d, c, 0, 0, showBoundary=showBoundary)
 File "/usr/lib/python2.7/dist-packages/reportlab/graphics/renderPM.py", line 50, in draw
   R.draw(renderScaledDrawing(drawing), canvas, x, y, showBoundary=showBoundary)
 File "/usr/lib/python2.7/dist-packages/reportlab/graphics/renderbase.py", line 198, in draw
   self.initState(x,y)  #this is the push()
 File "/usr/lib/python2.7/dist-packages/reportlab/graphics/renderPM.py", line 99, in initState
   self.applyState()
 File "/usr/lib/python2.7/dist-packages/reportlab/graphics/renderPM.py", line 93, in applyState
   self._canvas.setFont(s['fontName'], s['fontSize'])
 File "/usr/lib/python2.7/dist-packages/reportlab/graphics/renderPM.py", line 374, in setFont
   _setFont(self._gs,fontName,fontSize)
 File "/usr/lib/python2.7/dist-packages/reportlab/graphics/renderPM.py", line 227, in _setFont
   raise RenderPMError("Can't setFont(%s) missing the T1 files?\nOriginally %s: %s" % (fontName,s1,s2))
reportlab.graphics.renderPM.RenderPMError: Can't setFont(Times-Roman) missing the T1 files?
Originally <type 'exceptions.TypeError'>: makeT1Font() argument 2 must be string, not None


If I understand correctly, reportlab is trying to use non-free Adobe PostScript fonts, which (unsurprisingly) doesn't work on Debian systems. It should use the substitutes from the gsfonts package instead.

--
Jakub Wilk
from reportlab.graphics.shapes import Drawing
from reportlab.graphics import renderPM

d = Drawing(100, 100)
renderPM.drawToFile(d, 'test.png', 'PNG')

Reply to: