PyXMLでのundefined symbolエラー  

最近ではどの程度使われているか分かりませんが、Python 2.4環境下でのエラーです。
Python 2.4 + Vine 4.2の環境で発生しました。

undefined symbol  

minidom.parseとかxml.parsers.expatを使用したときに発生しました。

File "/usr/lib/python2.4/site-packages/_xmlplus/dom/minidom.py", line 1914, in parse
File "/usr/lib/python2.4/site-packages/_xmlplus/dom/expatbuilder.py", line 32, in ?
File "/usr/lib/python2.4/site-packages/_xmlplus/parsers/expat.py", line 4, in ?
ImportError: /usr/lib/python2.4/site-packages/_xmlplus/parsers/pyexpat.so: undefined symbol: XML_StopParser

pyexpat.soでXML_StopParserが見つからないというエラーです。状況によっては他のシンボルかもしれません。

原因  

原因はリンクされているlibexpatが古いという所にありそうです。そのため、Vine 4.2並みに古いディストリビューションじゃないと起こらないと思います。
Vine 4.2で使用されているexpatは1.95.8と古いため、問題が発生します。

解決方法  

libexpatを最新版(2.0.1)に変更すれば解消します。
ただし、Vine 4.2では依存関係の問題で単純にlibexpatを入れ替えることができません。そこで、問題を解決するためPyXMLをlibexpatを静的リンクで再ビルドしました。

python-pyxmlをアンインストール  

aptでpython-pyxmlをアンインストールします。

# apt-get remove python-pyxml

expat-2.0.1のインストール  

expatのページからexpat-2.0.1.tar.gzをダウンロードし、ビルドします。

% tar zxvf expat-2.0.1.tar.gz
% cd expat-2.0.1
% ./configure --prefix=/opt/expat-2.0.1 --enable-shared=no  <-- 共有ライブラリを作成しない
% make
# make install

PyXMLのインストール  

PyXMLのページからPyXML-0.8.4.tar.gzをダウンロードします。 expatをインストールしたら、スタティックリンクでPyXMLをビルドします。上で共有ライブラリを作成していないので強制的にスタティックリンクされます。共有ライブラリを作成しているとそれが使われてしまうので、削除するかどこかに移動しておく必要があります。

% tar zxvf PyXML-0.8.4.tar.gz
% cd PyXML-0.8.4
% python setup.py build --with-libexpat=/opt/expat-2.0.1
# python setup.py install

以上でexpat-2.0.1を使用したPyXMLがインストールされました。