При расследовании это происходит при вызове функции в модуле _hashlib
. Этот модуль является встроенным модулем в стандартной установке Python Ubuntu (см. sys.builtin_module_names
), поэтому _hashlib.so
, существующий в lib/python/lib/python2.6/lib-dynload/_hashlib.so
, не является частью сборки Python Ubuntu.
Это можно исправить, перекомпилировав этот модуль из стандартных источников Python:
export KOMODO_DIR=/home/davidf/Applications/Komodo-IDE-7
hg clone http://hg.python.org/cpython
cd cpython
hg checkout v2.6.5
(
cd $KOMODO_DIR/lib/python/lib
# handle no libssl.so
ln -s /lib/libssl.so.0.9.8
ln -s ./libssl.so.0.9.8 libssl.so
# save the original _hashlib library
cd python2.6/lib-dynload/
mv _hashlib.so _hashlib.so.orig
)
# cd to python src for python 2.6.5
./configure --prefix $KOMODO_DIR/lib/python/
# step here to patch setup.py as @jalefkowit describes
# ...
# build and copy result to komodo's lib-dynload directory
$KOMODO_DIR/lib/python/bin/python setup.py build_ext
cp build/lib.linux-i686-2.6/_hashlib.so $KOMODO_DIR/lib/python/lib/python2.6/lib-dynload/
Предостережения:
- На самом деле я не использовал вышеуказанный скрипт; это отдых. Могут быть ошибки:)
- Вам нужны источники CPython 2.6.5; вы можете получить их другим способом, если вам нравится
- Вероятно, есть более короткий и простой способ сделать это
- Это позволит собрать все модули расширения Python, а не только тот, который вам нужен
- На моем Ubuntu 11.10 есть
libssl.so.0.9.8
, но нет libssl.so
. Приведенная выше ссылка позволяет сборке Python найти их.
- На самом деле это работает на моей машине, но для 64-битной / другой версии вам могут потребоваться некоторые настройки