2015-03-27 2 views
1

Я пытаюсь использовать пользовательскую самокомпилированную версию Python, установленную под «/ opt» из сценария Upstart на Ubuntu 14.04. Общая настройка выглядит следующий:Как использовать самокомпилированный Python из сценария Upstart на Ubuntu 14.04

  • Файл конфигурации службы определяет предварительный сценарий запуска, который вызывает некоторый Баш скрипт от пользователя (не корневой) каталог
  • Этого Баша скрипт определяет функцию ошибки ловушки вызывая некоторый Python код
  • функция ошибки ловушки определяется как

    function error_handler() 
    { 
        python << END 
        # python code... 
        END 
    } 
    trap 'error_handler ${LINENO} $?' ERR 
    
  • Любая третья сторона побочные пакеты устанавливаются под «/ отказаться», а также с помощью пип от установки пользовательских Python

  • PATH переменной окр для этого не суперпользователя включает в себя двоичную папку в/неавтоматического где пользовательские Python можно найти
  • файл «.bashrc» был изменен, чтобы быть выполнены для не interactice лог-инов
  • Я также попытался использовать файл «.bash_profile» и просто называется «.bashrc» из него

    в лог-файлы под „/var/log/upstart/service.log“, я вижу сообщений об ошибке что любой установленный сторонний пакет Python не найден. Эти пакеты устанавливаются под «/ неавтоматического»

Обычай установки Python сам работает, как ожидалось. Я могу запустить любой код Python и импортировать любой из установленных боковых пакетов.

То, что я пытался до сих пор, чтобы получить его работу в качестве услуги:

  • Обновление пути окр varibale для данного пользователя
  • вызова Баш скрипт из раздела «предпусковой» с помощью sudo -u user_name команда
  • Изменить переменную PATH ENV внутри сценария Баш:

    PATH=/opt/bin:$PATH 
    export PATH 
    function error_handler() 
    { 
        PATH="$PATH" python << END 
        # python code... 
        END 
    } 
    trap 'error_handler ${LINENO} $?' ERR 
    
  • Set PYTHONHOME и PYTHONPATH env переменных

  • Обновить поиск Пути к библиотеке из кода Python с использованием sys.path.append перед импортом любого из 3-й партии побочных пакетов

Вот мой вопрос: Как я могу убедить службу запуска, чтобы забрать версию Python, которую я хочу запустить, и использовать пакеты, установленные в разделе «/ opt»?

В принципе, я хочу использовать Python 2.7.9 на Ubuntu 14.04. До сих пор я не мог найти предварительно скомпилированный пакет Ubuntu 14.04.

+0

В добавлении: Python 2.7.9 на Ubuntu 14.04 был бы одним из решений для решения нашей проблемы. Нам нужен только Python 2.7 с поддержкой TLS1_2. –

ответ

0

Мы смогли использовать наш самокомпилированный Python, добавив setuid вызов конфигурации службы и правильное использование виртуальных сред Python.

Oleg

Смежные вопросы