Python: ошибка при загрузке разделяемых библиотек: libpython3.4m.so.1.0: невозможно открыть файл общих объектов: такой файл или каталог отсутствует

Я создал виртуальную среду python с помощью virtualenv, после ее активации я вижу, где установлен Python,

(virtualenv-test) bash -4.1 $whereis python

python:/usr/bin/python2.6/usr/bin/python2.6-config/usr/bin/python /usr/lib/python 2.6/usr/lib64/python2.6/usr/X11R6/bin/python2.6 /usr/X 11R6/bin/python2.6-config/usr/X11R6/bin/python /usr/bin/X 11/python2.6/usr/bin/X11/python2.6-config /usr/bin/X 11/python/usr/include/python2.6 /usr/share/man/man 1/python.1.gz

(virtualenv-test) bash -4.1 $, который python

/данные/virtualenv-тест/бен/Python

Однако, после ввода python, я получил следующее сообщение об ошибке, что может быть основной причиной?

(virtualenv-test) bash-4.1$ python
python: error while loading shared libraries: libpython3.4m.so.1.0: cannot open shared object file: No such file or directory

Ответ 1

  1. Кто-то сказал, что этот способ может решить проблему (я не знаю, работает ли он, потому что я исправляю проблему другим способом): добавьте путь lib py3.4 в переменную среды $ LD_LIBRARY_PATHСначала узнайте путь к lib для python3.4 (в папке, в которой он установлен), как я: /opt/python361/lib, затем добавьте его в переменную окружения:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/python361/lib
  1. Я столкнулся с подобной проблемой при использовании virtualenv с python3.6, и я исправил следующее:
    • Во-первых, отредактируйте sudo vi /etc/ld.so.conf, добавьте lib путь python3.x к этому файлу (как я: /opt/python361/lib) и сохраните изменение этого файла conf;
    • Затем активируйте этот файл с помощью sudo /sbin/ldconfig -v. Это все.

Ответ 2

export LD_LIBRARY_PATH=[your python path to libpython3.4m.so]

libpython3.4m.so находится под вашим источником python, из которого вы его создали.

Поместите его в свой .bashrc, чтобы автоматически установить его при входе в систему.

Я не могу заставить virtualenv равным 3.4 на моей машине, но вы можете видеть, что в lib вашего виртуального v существует только пучок символической ссылки на вашу локальную установку python. Я думаю, libpython3.4m.so является выборкой одним из них.

Ответ 3

Для Python 3.6 это было исправлено

sudo apt-get install libpython3.6-dev

Ответ 4

Другой способ - добавить LDFLAGS="-Wl,-rpath/usr/local/lib", например, в configure.

./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

/usr/local/lib - это путь к libpython3.*.so файлы находятся в

Ответ 5

Слава выше, для Python 3.X вы можете решить эту проблему с помощью:

sudo apt-get install libpython3.x-dev

Нет необходимости вносить какие-либо изменения в путь среды вручную.