Arduino Yun и переменные окружения

Тема в разделе "Arduino & Shields", создана пользователем Vir, 21 июн 2017.

  1. Vir

    Vir Гик

    День добрый.

    Пытаюсь вызвать скриптик на питоне из скетча с помощью Process. И всё бы ничего, всё отлично работает, пока скриптик состоит из одной строчки print(123). Как только в скрипт добавляется вызов библиотек, то работа скрипта прекращается, причём без ошибок, просто без ответа.

    Покапавшись, я понял, что дело в переменных окружения. Для корректной работы скрипта необходимо наличие переменной окружения LD_LIBRARY_PATH, и пока я работаю по ssh, из консоли, скрипт запускается на ура, отрабатывает и это логично. Ведь я в ~/.profile прописал export LD_LIBRARY_PATH=/mnt/sda1/usr/lib, и всё отлично.

    Возвращаясь к вызову скрипта из скетча, я попробовал вызвать "env", и посмотреть, что мне вернёт результат выполнения этой команды. Как и ожидалось, я получил стандартный набор переменных окружения, где отсутствовал LD_LIBRARY_PATH. Затем, я всё же попробовал, прям из скетчка выполнить export, но безуспешно. Последовательное выполнение export, а затем env, всё равно приводило к результату, где отсутствует LD_LIBRARY_PATH.

    Так же, пробовал прописывать в формате KEY=VALUE, в файл /etc/environment. Тоже безрезультатно, причём как для выполнения env из скетча, так и для выполнения в консоли из под root'a. Т.е. прописывание в /etc/environment - вообще не даёт результата.

    Пока мысли иссякли, решил спросить тут. Может кто-нибудь сможет что-то посоветовать.
     
  2. mcureenab

    mcureenab Гуру

  3. Vir

    Vir Гик

    Это не то. Речь не о PYTHON_PATH, а о произвольных, других, переменных. Опять же, в моём случае LD_LIBRARY_PATH.

    Если быть конкретным, то я говорю не об import'e site-packages модулей в питоне, а скорее о подсасывании so-библиотек. В моём случае sqlite3.so. И по-большому счёту, я бы мог сделать симлинк на неё из стандартного /usr/lib, но это не комильфо, так как обширная часть so-модулей лежит на смонтированной флешке. Не сделаешь же для каждой библиотеки симлинк, тем более, когда есть давно существующий механизм переменных окружения.

    Поэтому, мне кажется, есть какая-то возможность указать эти переменные для вызовов из скетча.
     
  4. mcureenab

    mcureenab Гуру

    Вызывай shell скрипт, создавай в нем нужное окружение и из него вызывай скрипт на питоне.