_namemapper.soテンプレートの生成に Python Cheetah を使用していますが、インストールされているコンパイル済みライブラリを使用できません。Cheetah 2.4.3 を使用して、Python 2.4 がインストールされた CentOS 5.4 で実行しています。_namemapper.soインストール中に作成したファイルをCheetahに使用させることはできません。
Filling conf/asterisk/sip.conf.ect -> conf/asterisk/sip.conf ...
/usr/lib64/python2.4/site-packages/Cheetah/Compiler.py:1508: UserWarning:
You don't have the C version of NameMapper installed! I'm disabling Cheetah's
useStackFrames option as it is painfully slow with the Python version of NameMapper.
You should get a copy of Cheetah with the compiled C version of NameMapper.
NameMapperただし、モジュールのすぐ隣に共有ライブラリがあります。
$ ls -ltr /usr/lib64/python2.4/site-packages/Cheetah/ | grep -i namemap
-rw-r--r-- 1 root root 12376 Jul 1 20:17 NameMapper.py
-rwxr-xr-x 1 root root 36982 Dec 1 09:55 _namemapper.so
-rw-r--r-- 1 root root 12541 Dec 1 09:55 NameMapper.pyc
このディレクトリを に追加しようとしましたが/etc/ld.so.conf.d/python-cheetah.conf、_namemapper.so共有ライブラリが見つかりません。
何か案は?
解決した
@alex-b に感謝します。32 ビット マシンで Cheetah をコンパイルし、共有ライブラリを 64 ビット マシンにロードしようとしていたことがわかりました。ああ!
>>> from Cheetah._namemapper import NotFound
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: /usr/lib/python2.4/site-packages/Cheetah/_namemapper.so: wrong ELF class: ELFCLASS32
次に、次の問題に遭遇しました。
>>> from Cheetah._namemapper import NotFound
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: /usr/lib/python2.4/site-packages/Cheetah/_namemapper.so: undefined symbol: PyUnicode_FromFormat
Cheetah は Python <= 2.6 ではうまく動作しないことが判明したので、アップグレードします。