Библиотека Python не загружается, если не запускается из корня - PullRequest
0 голосов
/ 08 января 2019

У меня есть какой-то код, который я играю с использованием dlib, но когда я пытаюсь импортировать dlib в свой код на python, я получаю эту ошибку:

File "boom.py", line 32, in <module>
    from faceSwap import *
File "/home/user/coding/faceSwap.py", line 22, in <module>
import dlib
ImportError: libboost_python-py27.so.1.49.0: cannot open shared object file: No 
such file or directory

Однако, когда я запускаю его как root - он работает просто отлично! Однако я не хочу запускать демон от имени root - поэтому я бы хотел это исправить. Я пытался удалить / переустановить dlib несколько раз через PIP, но безуспешно.

Когда я проверяю библиотеку, кажется, что она отсутствует в учетных записях уровня root и пользователя, хотя DLIB действительно запускается, когда программа python запускается от имени root:

Пользователь:

$ whereis  libboost_python-py27.so.1.49.0
libboost_python-py27.so.1.49:

корень:

# whereis libboost_python-py27.so.1.49.0
libboost_python-py27.so.1.49:

Учетная запись root и пользователя используют один и тот же python

 /usr/local/bin/python

Единственная подсказка, которую я имею, - то, что dlib учетной записи пользователя не может искать:

 /usr/lib/libboost_python-py27.so.1.49.0 

но корневой работает и, кажется, использует:

 /usr/local/lib/python2.7/dist-packages/dlib.so

Есть идеи, как я могу обойти это или исправить это?

1 Ответ

0 голосов
/ 08 января 2019

Пара вещей, которые вы можете попробовать:

1) Убедитесь, что вы используете ту же версию Python, что и root, и обычного пользователя. which python должно работать на ОС Unix. Попробуйте это как root и сравните, чтобы увидеть, совпадают ли установки python.

2) Переустановите boost. Убедитесь, что это правильная версия. Попробуйте использовать pip для этого.

3) Если это проблема с разрешениями, вы можете изменить разрешения соответствующих каталогов с помощью chown, чтобы программа могла получить к ней доступ. Это НЕ рекомендуется. И я не думаю, что это проблема, поскольку ошибка говорит, что она не может найти libboost. Это означает, что есть некоторые проблемы с установкой.

4) Установить dlib из исходного кода. Это довольно легко. Проверьте здесь для получения дополнительной информации: http://dlib.net/compile.html. По сути, загрузите последний выпуск и запустите python setup.py install из основной папки dlib. Я могу провести вас через это, если вам понадобится дополнительная помощь.

...