2

Mac OS X にSageをインストールしました。PIL があるようです。次のコードでは、IOError が返されます。

import Image
a = Image.open("pic.jpg")
a.thumbnail((int(100), int(100)))

これは私が得るエラーです。

IOError                                   Traceback (most recent call last)

<ipython console> in <module>()

/sage/local/lib/python2.6/site-packages/PIL/Image.pyc in thumbnail(self, size, resample)
   1520         self.draft(None, size)
   1521 
-> 1522         self.load()
   1523 
   1524         try:

/sage/local/lib/python2.6/site-packages/PIL/ImageFile.pyc in load(self)
    178 
    179             for d, e, o, a in self.tile:
--> 180                 d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
    181                 seek(o)
    182                 try:

/sage/local/lib/python2.6/site-packages/PIL/Image.pyc in _getdecoder(mode, decoder_name, args, extra)
    373         return apply(decoder, (mode,) + args + extra)
    374     except AttributeError:
--> 375         raise IOError("decoder %s not available" % decoder_name)
    376 
    377 def _getencoder(mode, encoder_name, args, extra=()):

IOError: decoder jpeg not available

私には、libjpegが見つからないようです。自分のマシンで MacPorts を確認したところ、jpeg パッケージがインストールされているようです。/opt/local/lib にも libjpeg が見つかりました。os ライブラリを使用して、sage スクリプトと Sage の両方で LD_LIBRARY_PATH を操作しようとしましたが、このエラーを取り除くことができませんでした。PIL を入手して libjpeg を見つける方法をインターネットで検索しましたが、setup.py を変更して PIL を再構築する方法が見つかりました。sage には PIL の setup.py が含まれていないようです。

他の誰かがこの問題に遭遇して解決しましたか? おそらく、PILに詳しい人ですか?

4

1 に答える 1

2

答えは、PILを再インストールすることです。

sage.misc.package.install_package("pil", force=True)

とてもシンプルで、ほんの数分で完了しました。私のマシンに再インストールすると、おそらく私のマシン上のライブラリの場所を見つけることができました。

于 2011-10-01T00:25:56.670 に答える