私はできませんimport matplotlib._png
:
import matplotlib._png as _png ImportError:
/home/james/opt/python/virtualenvs/work/lib/python2.7/site-packages/matplotlib-1.3.x-py2.7-linux-x86_64.egg/matplotlib/_png.so: 未定義のシンボル: png_set_longjmp_fn
このエラーにより、実行できなくなりますimport pylab
(これは最終的にインポートされるためmatplotlib._png
)。
ソースからインストールし、実行する前にmatplotlib
ローカル インストール ( /home/james/local
) を含むパスを に追加したことを確認しました。basedir
setupext.py
python setup.py install
REQUIRED DEPENDENCIES AND EXTENSIONS
numpy: yes [version 1.7.1]
dateutil: yes [using dateutil version 2.1]
tornado: yes [using tornado version 3.0.1]
pyparsing: yes [using pyparsing version 1.5.7]
pycxx: yes [Couldn't import. Using local copy.]
libagg: yes [pkg-config information for 'libagg' could not
be found Using local copy.]
freetype: yes [version 16.0.10]
png: yes [version 1.2.10]
これまでの私の研究:
上に見られるように、matplotlib は1.2.10
、私が持っているバージョンが次のバージョンであっても、バージョンを見つけるよう/home/james/local
です1.6.2
:
$ find . -iname '*libpng*'
./libpng16.so.16.1.0
./libpng16.so
./libpng16.so.16
./libpng16.a
./libpng.a
./libpng.so
./libpng16.la
./pkgconfig/libpng.pc
./pkgconfig/libpng16.pc
./libpng.la
より具体的には、次の行を次のように変更しましsetupext.py
た。
return basedir_map.get(sys.platform, ['/home/james/local', '/usr/local', '/usr'])
しかし、matplotlib はシステム バージョンを見つけたようです。
$ locate libpng
/usr/lib/libpng.so
/usr/lib/libpng.so.3
/usr/lib/libpng.so.3.10.0
/usr/lib/libpng12.a
/usr/lib/libpng12.so
/usr/lib/libpng12.so.0
/usr/lib/libpng12.so.0.10.0
これが問題でしょうか?インポートできないのはなぜmatplotlib._png
ですか?
アップデート:
を見ると、インストールした libpng のバージョンを確認するメソッドをクエリしているsetupext.py
ように見えます。システムのインストールが返されていることがわかりました。python setup install
pkg-config
SetupPackage
_check_for_pkg_config
pkg-config
$ pkg-config --libs libpng
-lpng12
basedir
matplotlib で更新したsetupext.py
にもかかわらず、ローカルにインストールしたLD_LIBRARY_PATH
最新バージョンを指すようにします。libpng
pkg-config
正しいバージョンを返す方法についてのアイデアはありますか?