繁体   English   中英

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

[英]How to use self-compiled Python from an Upstart script on Ubuntu 14.04

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

  • 服务配置文件定义了一个预启动脚本,该脚本从用户(非根)目录中调用一些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代码并导入任何已安装的副程序包。

到目前为止,我已经尝试过使它作为服务工作:

  • 更新给定用户的PATH环境变量
  • 使用sudo -u user_name命令从“ pre-start”部分调用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代码更新库搜索路径。

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

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

通过将setuid调用添加到服务配置中并适当使用Python虚拟环境,我们能够使用自编译的Python。

奥列格

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM