私はできません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) を含むパスを に追加したことを確認しました。basedirsetupext.pypython 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 installpkg-configSetupPackage_check_for_pkg_configpkg-config
$ pkg-config --libs libpng
-lpng12
basedirmatplotlib で更新したsetupext.pyにもかかわらず、ローカルにインストールしたLD_LIBRARY_PATH最新バージョンを指すようにします。libpng
pkg-config正しいバージョンを返す方法についてのアイデアはありますか?