如何在Ubuntu 14.04上使用Upstart脚本中的自编译Python

时间:2015-03-27 11:27:52

标签: bash python-2.7 ubuntu-14.04 upstart

我正在尝试使用Ubuntu 14.04上的Upstart脚本中“/ opt”下安装的自定义自编译Python版本。常规设置如下所示:

  • 服务配置文件定义了一个从用户(非root)目录调用一些bash脚本的预启动脚本
  • 此bash脚本定义了一个调用某些Python代码的陷阱错误函数
  • 陷阱错误功能定义为

    function error_handler()
    {
        python << END
        # python code...
        END
    }
    trap 'error_handler ${LINENO} $?' ERR
    
  • 使用自定义Python安装中的pip,任何第三方侧包都安装在“/ opt”下

  • 此非root用户的PATH env变量包含/ opt下的二进制文件夹,可以找到自定义Python
  • 修改了“.bashrc”文件以执行非互动登录
  • 我还尝试使用“.bash_profile”文件并从中调用“.bashrc”

      

    在“/var/log/upstart/service.log”下的日志文件中,我看到错误消息,指出找不到任何已安装的第三方Python端包。这些软件包安装在“/ opt”

自定义Python安装本身按预期工作。我可以运行任何Python代码并导入任何已安装的side-package。

到目前为止,我尝试过将其作为服务工作:

  • 更新给定用户的PATH env varibale
  • 使用sudo -u user_name命令
  • 从“预启动”部分调用bash脚本
  • 修改bash脚本中的PATH env变量:

    PATH=/opt/bin:$PATH
    export PATH
    function error_handler()
    {
        PATH="$PATH" python << END
        # python code...
        END
    }
    trap 'error_handler ${LINENO} $?' ERR
    
  • 设置PYTHONHOMEPYTHONPATH env变量

  • 在导入任何第三方端包之前,使用sys.path.append从Python代码更新库搜索路径

以下是我的问题:如何说服Startup服务选择我要运行的Python版本并使用“/ opt”下安装的软件包?

基本上,我想在Ubuntu 14.04上使用Python 2.7.9。到目前为止,我找不到任何预编译的Ubuntu 14.04软件包。

1 个答案:

答案 0 :(得分:0)

我们可以通过添加setuid调用服务配置和正确使用Python虚拟环境来使用我们自编的Python。

奥列格