Ошибка при загрузке разделяемых библиотек: libreadline.so.5:

Я пытаюсь выполнить команду sudo pip install --upgrade virtualenv, но постоянно получаю следующую ошибку:

/opt/bitnami/python/bin/.python2.7.bin: error while loading shared libraries:
libreadline.so.5: cannot open shared object file: No such file or directory

Я попытался использовать рекомендацию по этой ссылке [Bitnami - /opt/bitnami/python/bin/.python2.7.bin: ошибка при загрузке общих библиотек: libreadline.so.5](Bitnami - /opt/bitnami/python/bin/.python2 .7.bin: ошибка при загрузке разделяемых библиотек: libreadline.so.5 и no prevai), но это не помогло.

Почему я получаю сообщение об ошибке?


person maplesyrup    schedule 25.07.2014    source источник
comment
У вас есть libreadline.so.5 в LD_LIBRARY_PATH? Если у вас его нет, но есть libreadline.so.5.2 или аналогичный, вам просто нужно запустить ldconfig. Если ваш Python построен на другой системе, он может быть связан с версиями библиотек, которых у вас нет. Попробуйте пересобрать его в своей системе.   -  person Robert Jørgensgaard Engdahl    schedule 25.07.2014
comment
До получения вашего комментария. Я выполнил команду sudo apt-get install libreadline5, и теперь при выполнении той же команды sudo pip install --upgrade virtualenv я получаю следующую ошибку... ImportError: /opt/bitnami/python/lib/python2.7/lib -dynload/_ctypes.so: неопределенный символ: PyUnicodeUCS2_FromEncodedObject   -  person maplesyrup    schedule 26.07.2014
comment
Эта функция, вероятно, не определена в вашей системе. Разве вы не можете просто установить virtualenv и python поддерживаемым способом, чтобы вам не приходилось иметь дело с версиями библиотек и отсутствующими символами?   -  person Robert Jørgensgaard Engdahl    schedule 26.07.2014


Ответы (4)


Я понял это.

  1. Вы должны быть на корневом уровне, введя команду sudo su.

  2. Теперь, находясь на корневом уровне, выполните следующую команду. /opt/bitnami/скрипты/setenv.sh

  3. Я захожу на свой сервер, используя SSH, видимо, мне приходится выполнять одни и те же шаги каждый сеанс.

person maplesyrup    schedule 30.07.2014

установка virtualenv с помощью pip устанавливает его в стек битнами, поэтому для использования virtualenv нам нужно выполнить сценарий оболочки setenv.sh, этот сценарий дает полномочия virtualenv, но нам нужно запускать его каждый раз, поэтому лучше установить virtualenv в корень системы с помощью sudo apt-get

установить virtualenv в корень

sudo apt-get установить python-virtualenv

person Shubham Badal    schedule 02.11.2014

Итак, хотя ответ кленового сиропа хорош, я нашли решение, которое лучше работает на практике.

Выполнить sudo echo '. /opt/bitnami/scripts/setenv.sh' >> /opt/bitnami/.bitnamirc

Это добавит вызов сценария в ответ кленового сиропа, но затем он будет вызываться при каждом входе в систему. Единственным недостатком является то, что вы должны вводить свой пароль сразу после входа в систему через ssh, но это намного лучше, чем вручную вызывать скрипт каждый раз, когда вы входите в систему.

person chairmanwow    schedule 04.12.2015

Требуемый файл отсутствует в каталоге. обычно это происходило из-за обновления, которое заменяло определенную версию файла на более новую версию (например, libreadline.so.5 заменено на libreadline.so.8). чтобы исправить это, сначала вы должны проверить каталог библиотеки (/usr/lib), если существует версия версии файла, затем вы можете создать ссылку на этот файл с именем отсутствующего файла.

в следующем примере создается ссылка с именем отсутствующего файла (libreadline.so.5), связанного с libreadline.so.8. но будьте ОСТОРОЖНЫ, потому что это может привести к тому, что ваш терминал не сможет получить ввод, если определенная libreadline.so.* потеряна

cd /usr/lib
ln -sf libreadline.so.8 -T libreadline.so.5

это решение работает для меня.

person mol    schedule 27.01.2019
comment
Это крайне опасный подход к этой проблеме. Выявление проблемы с зависимостями и ее устранение путем обновления установки Python должно устранить проблему. Имейте в виду, что здесь вы создадите большую проблему, чем решите. - person Chris Larson; 27.01.2019