|
From: Damon M. <dam...@gm...> - 2009-09-15 10:32:17
|
Hi All,
After having installed Snow Leopard (10.6), I got some silly errors
with libraries (installed via Macports) using deprecated functions
Apple no longer supports, so I trashed the whole of Macports and
reinstalled it. I then installed py25-matplotlib and get the following
error message when trying the following
>>> from matplotlib.figure import Figure
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/lib/python2.5/site-packages/matplotlib/figure.py",
line 19, in <module>
from axes import Axes, SubplotBase, subplot_class_factory
File "/opt/local/lib/python2.5/site-packages/matplotlib/axes.py",
line 12, in <module>
import matplotlib.axis as maxis
File "/opt/local/lib/python2.5/site-packages/matplotlib/axis.py",
line 10, in <module>
import matplotlib.font_manager as font_manager
File "/opt/local/lib/python2.5/site-packages/matplotlib/
font_manager.py", line 1301, in <module>
_rebuild()
File "/opt/local/lib/python2.5/site-packages/matplotlib/
font_manager.py", line 1292, in _rebuild
fontManager = FontManager()
File "/opt/local/lib/python2.5/site-packages/matplotlib/
font_manager.py", line 1010, in __init__
self.afmlist = createFontList(self.afmfiles, fontext='afm')
File "/opt/local/lib/python2.5/site-packages/matplotlib/
font_manager.py", line 578, in createFontList
font = afm.AFM(fh)
File "/opt/local/lib/python2.5/site-packages/matplotlib/afm.py",
line 294, in __init__
parse_afm(fh)
File "/opt/local/lib/python2.5/site-packages/matplotlib/afm.py",
line 282, in parse_afm
dcmetrics_ascii, dcmetrics_name = _parse_char_metrics(fh)
File "/opt/local/lib/python2.5/site-packages/matplotlib/afm.py",
line 168, in _parse_char_metrics
bbox = _to_list_of_ints(vals[3][2:])
File "/opt/local/lib/python2.5/site-packages/matplotlib/afm.py",
line 47, in _to_list_of_ints
return [_to_int(val) for val in s.split()]
ValueError: invalid literal for int() with base 10: '836.364'
I have no clue what is going on. Does anybody have any ideas?
Regards,
--Damon
|
|
From: Jouni K. S. <jk...@ik...> - 2009-09-15 10:42:41
|
Damon McDougall <dam...@gm...> writes: > >>> from matplotlib.figure import Figure > ValueError: invalid literal for int() with base 10: '836.364' > > I have no clue what is going on. Does anybody have any ideas? Could you do the following: (if you already exited that Python shell and can't reproduce the problem any longer, you can delete your ~/.matplotlib/fontList.cache and try again) from pdb import pm pm() This should get you to a debugger. Then type: up p fh p line p vals to get some more information on what is going wrong. -- Jouni K. Seppänen http://www.iki.fi/jks |
|
From: Damon M. <dam...@gm...> - 2009-09-15 11:18:10
|
Hi Jouni,
Sure. Here is the output from your suggestion:
Python 2.5.4 (r254:67916, Sep 15 2009, 11:16:42)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from pdb import pm
>>> from matplotlib.figure import Figure
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/lib/python2.5/site-packages/matplotlib/figure.py",
line 19, in <module>
from axes import Axes, SubplotBase, subplot_class_factory
File "/opt/local/lib/python2.5/site-packages/matplotlib/axes.py",
line 12, in <module>
import matplotlib.axis as maxis
File "/opt/local/lib/python2.5/site-packages/matplotlib/axis.py",
line 10, in <module>
import matplotlib.font_manager as font_manager
File "/opt/local/lib/python2.5/site-packages/matplotlib/
font_manager.py", line 1301, in <module>
_rebuild()
File "/opt/local/lib/python2.5/site-packages/matplotlib/
font_manager.py", line 1292, in _rebuild
fontManager = FontManager()
File "/opt/local/lib/python2.5/site-packages/matplotlib/
font_manager.py", line 1010, in __init__
self.afmlist = createFontList(self.afmfiles, fontext='afm')
File "/opt/local/lib/python2.5/site-packages/matplotlib/
font_manager.py", line 578, in createFontList
font = afm.AFM(fh)
File "/opt/local/lib/python2.5/site-packages/matplotlib/afm.py",
line 294, in __init__
parse_afm(fh)
File "/opt/local/lib/python2.5/site-packages/matplotlib/afm.py",
line 282, in parse_afm
dcmetrics_ascii, dcmetrics_name = _parse_char_metrics(fh)
File "/opt/local/lib/python2.5/site-packages/matplotlib/afm.py",
line 168, in _parse_char_metrics
bbox = _to_list_of_ints(vals[3][2:])
File "/opt/local/lib/python2.5/site-packages/matplotlib/afm.py",
line 47, in _to_list_of_ints
return [_to_int(val) for val in s.split()]
ValueError: invalid literal for int() with base 10: '836.364'
>>> pm()
> /opt/local/lib/python2.5/site-packages/matplotlib/afm.py(47)
_to_list_of_ints()
-> return [_to_int(val) for val in s.split()]
(Pdb) up
> /opt/local/lib/python2.5/site-packages/matplotlib/afm.py(168)
_parse_char_metrics()
-> bbox = _to_list_of_ints(vals[3][2:])
(Pdb) p fh
<closed file '/Users/Damon/Library/Fonts/lcmssi8.afm', mode 'r' at
0x1019b67b0>
(Pdb) p line
'C 0 ; WX 708.333 ; N Gamma ; B 0 0 836.364 684.027 ;'
(Pdb) p vals
['C 0 ', ' WX 708.333 ', ' N Gamma ', ' B 0 0 836.364 684.027 ']
Also, after some curiosity, I realised the file ~/.matplotlib/
fontList.cache doesn't exist. In fact, the ~/.matplotlib directory is
empty, there aren't even any hidden files. On my other computer,
matplotlib works fine and the ~/.matplotlib directory contains three
files: fontList.cache, fontManager.cache and tex.cache.
Hope this explains more. Thanks in advance for any help.
Regards,
--Damon
On 15 Sep 2009, at 11:42, Jouni K. Seppänen wrote:
> Damon McDougall <dam...@gm...> writes:
>
>>>>> from matplotlib.figure import Figure
>> ValueError: invalid literal for int() with base 10: '836.364'
>>
>> I have no clue what is going on. Does anybody have any ideas?
>
> Could you do the following: (if you already exited that Python shell
> and can't reproduce the problem any longer, you can delete your
> ~/.matplotlib/fontList.cache and try again)
>
> from pdb import pm
> pm()
>
> This should get you to a debugger. Then type:
>
> up
> p fh
> p line
> p vals
>
> to get some more information on what is going wrong.
>
> --
> Jouni K. Seppänen
> http://www.iki.fi/jks
>
>
> ------------------------------------------------------------------------------
> Come build with us! The BlackBerry® Developer Conference in SF, CA
> is the only developer event you need to attend this year. Jumpstart
> your
> developing skills, take BlackBerry mobile applications to market and
> stay
> ahead of the curve. Join us from November 9-12, 2009. Register
> now!
> http://p.sf.net/sfu/devconf
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
|
|
From: Jouni K. S. <jk...@ik...> - 2009-09-15 11:50:22
Attachments:
afm-bbox.patch
|
Damon McDougall <dam...@gm...> writes: > (Pdb) p fh > <closed file '/Users/Damon/Library/Fonts/lcmssi8.afm', mode 'r' at That's a font that probably came with a TeX distribution and somehow got installed in your font library. > (Pdb) p line > 'C 0 ; WX 708.333 ; N Gamma ; B 0 0 836.364 684.027 ;' Failing on this line is a bug in matplotlib, since the AFM spec says that bounding-box coordinates are "numbers", not "integers". Apparently not many AFM files use that precise bounding boxes, since we haven't run into this before. I don't know how the MacPorts packaging system would react to modifying installed files, but I imagine that applying the attached patch should fix this. > Also, after some curiosity, I realised the file ~/.matplotlib/ > fontList.cache doesn't exist. In fact, the ~/.matplotlib directory is > empty, there aren't even any hidden files. On my other computer, > matplotlib works fine and the ~/.matplotlib directory contains three > files: fontList.cache, fontManager.cache and tex.cache. Maybe the files just didn't get written into your directory, since matplotlib bailed out at the first failure. |
|
From: Damon M. <dam...@gm...> - 2009-09-15 12:53:08
|
Hi Jouni, Wow, that worked a treat. Thank you very much! Maybe you should post that to the -devel mailing list, too! On the computer that this bug didn't occur, the ~/Library/Fonts directory is completely empty! I wonder where it is looking for lcmssi8.afm if it isn't in ~/Library/Fonts Yeah I didn't want to play around with the installed files Macports creates, so I installed matplotlib from svn and, also since I don't know how to apply a patch, I just edited the afm.py to make your changes. This worked fine, and I no longer get the error! Also, as I now have produced a graph (just a sin wave) as a test, the ~/.matplotlib directory contains some files (fontList.cache and tex.cache). It seems as though these files are created to aid in the speed of producing plots in the future by saving previously produced text output. Thank you very much, Jouni! Regards, --Damon On 15 Sep 2009, at 12:49, Jouni K. Seppänen wrote: > Damon McDougall <dam...@gm...> writes: > >> (Pdb) p fh >> <closed file '/Users/Damon/Library/Fonts/lcmssi8.afm', mode 'r' at > > That's a font that probably came with a TeX distribution and somehow > got > installed in your font library. > >> (Pdb) p line >> 'C 0 ; WX 708.333 ; N Gamma ; B 0 0 836.364 684.027 ;' > > Failing on this line is a bug in matplotlib, since the AFM spec says > that bounding-box coordinates are "numbers", not "integers". > Apparently > not many AFM files use that precise bounding boxes, since we haven't > run > into this before. > > I don't know how the MacPorts packaging system would react to > modifying > installed files, but I imagine that applying the attached patch should > fix this. > >> Also, after some curiosity, I realised the file ~/.matplotlib/ >> fontList.cache doesn't exist. In fact, the ~/.matplotlib directory is >> empty, there aren't even any hidden files. On my other computer, >> matplotlib works fine and the ~/.matplotlib directory contains three >> files: fontList.cache, fontManager.cache and tex.cache. > > Maybe the files just didn't get written into your directory, since > matplotlib bailed out at the first failure. > > Index: lib/matplotlib/afm.py > =================================================================== > --- lib/matplotlib/afm.py (revision 7750) > +++ lib/matplotlib/afm.py (working copy) > @@ -165,7 +165,8 @@ > num = _to_int(vals[0].split()[1]) > wx = _to_float(vals[1].split()[1]) > name = vals[2].split()[1] > - bbox = _to_list_of_ints(vals[3][2:]) > + bbox = _to_list_of_floats(vals[3][2:]) > + bbox = map(int, bbox) > # Workaround: If the character name is 'Euro', give it the > corresponding > # character code, according to WinAnsiEncoding (see PDF > Reference). > if name == 'Euro': > > -- > Jouni K. Seppänen > http://www.iki.fi/jks > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry® Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart > your > developing skills, take BlackBerry mobile applications to market and > stay > ahead of the curve. Join us from November 9-12, 2009. Register > now! > http://p.sf.net/sfu/devconf_______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users |