#python #c #django
У меня имеется сишная библиотека, которой я пользуюсь из питона. Взаимодействие по этой схеме. Проблема вот в чем: процесс python'а работает с правами суперпользователя, но сишные функции из библиотеки, которые вызываются этим процессом, работают без прав суперпользователя, соответственно возвращают ошибку. Как быть в этой ситуации? Update: Работаю с django. Изначально пробовал запускать компилированные объектные файлы из питона - работает как нужно. Но во views.py пробовал вызывать разными методами (например, таким) — не вышло: [Errno 2] No such file or directory несмотря на то, что объектный файл лежит в одной директории с views.py.
Ответы
Ответ 1
соответственно возвращают ошибку: [Errno 2] No such file or directory, несмотря на то, что объектный файл лежит в одной директории со views.py ошибка не связана с отсутствием/наличием каких-то прав. вообще «дочерние» процессы (по умолчанию) наследуют привилегии от породившего их процесса. ошибка вызвана тем, что у вас не ms/windows, а gnu/linux, и поиск библиотек (по умолчанию) не производится ни в текущем, ни в каком-либо другом произвольном каталоге. можно попробовать добавить текущий каталог — . (или любой другой нужный) — к переменной окружения LD_LIBRARY_PATH, например, так: $ LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH python file.py если же используется sudo, то, скорее всего команда вида: $ LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH sudo python file.py не даст эффекта — наверняка sudo в используемой системе сконфигурирован игнорировать LD_LIBRARY_PATH из переменных окружения, поэтому данную переменную программе sudo надо передавать явно при вызове как параметр: $ sudo LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH python file.py
Комментариев нет:
Отправить комментарий