Я использую Python Cheetah для генерации шаблонов и не могу заставить его использовать скомпилированную библиотеку _namemapper.so
, которая установлена.Я работаю на CentOS 5.4 с установленным Python 2.4, используя Cheetah 2.4.3.Я никак не могу заставить Cheetah использовать файл _namemapper.so
, который я создал во время установки:
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.Оказывается, я скомпилировал Cheetah на 32-битной машине и пытался загрузить общую библиотеку на 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
И оказалось, что Гепард не так хорошо работает на Python <= 2.6, поэтому ябудет обновление. </p>