I'm using Python Cheetah for template generation and I can't get it to use the compiled _namemapper.so
library that is installed. I am running on CentOS 5.4 with Python 2.4 installed, using Cheetah 2.4.3. I cannot for the life of me get Cheetah to use the _namemapper.so
file that I built during install:
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.
However, I have the shared library sitting right next to the NameMapper
modules:
$ 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
I've tried adding this directory to /etc/ld.so.conf.d/python-cheetah.conf
, and the _namemapper.so
shared library is not found.
Any ideas?
SOLVED
Thanks @alex-b. Turns out I had compiled Cheetah on a 32-bit machine and was attempting to load the shared library on a 64-bit machine. D'oh!
>>> 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
Then I ran into the next problem:
>>> 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
And it turns out that Cheetah doesn't work so well on Python <= 2.6, so I will be upgrading.