【问题标题】:Run python script as upstart service with specific python version将 python 脚本作为具有特定 python 版本的新贵服务运行
【发布时间】:2014-09-05 21:56:00
【问题描述】:

我正在为我的 centOs 服务器上的 python 脚本设置一个新贵服务。虽然脚本需要 python 2.7 才能工作。但是服务器上的默认python版本是2.6,我不想更改它,因为我担心其他脚本会失败。

我已经安装了 python 2.7 并对其进行了测试,它与我的脚本完美配合。虽然我想知道我应该如何编写 .conf 文件以使该文件使用 python 2.7 执行。因为现在我收到“作业无法启动”消息。我相信这可能是因为它在执行脚本时使用的是 2.6。

这是我当前的 conf 文件(虽然目录和文件名已更改):

description "MY SCRIPT DESCRIPTION"
author "MY NAME"

start on runlevel [234]
stop on runlevel [0156]

chdir /home/aUser/scriptLocation
exec /home/aUser/scriptLocation/theScript.py
respawn

【问题讨论】:

  • 您的第一段说您确实想使用 2.7 但最终在 2.6 下运行。您的第二段暗示您不想想要使用 2.7,并认为“可能是因为它在执行脚本时使用 2.7”导致作业无法启动。我猜是前者,而不是后者,但您应该编辑问题以使其清楚。
  • 另外,您是否在theScript.py#!/usr/bin/python 的顶部放置了#!/usr/local/bin/python2.7 或类似名称?因为如果是后者,这就是你遇到这个问题的原因。我不知道您是如何部署脚本的,但各种事物(包括 setuptools )都知道如何在安装/部署过程中自动更新 shebang,因此在这里修复您的部署过程可能是正确的解决方案。
  • 抱歉我的错字。我想使用 2.7,但我认为它使用的是 2.6。所以我改变了这一点。我认为丹尼尔的答案会起作用(如果我只使用 2.7 而不是 2.6)。但我得等到明天才能尝试。

标签: python linux python-2.7 centos upstart


【解决方案1】:

您可以直接调用 Python 可执行文件并将脚本作为参数传递,而不是调用脚本本身。

exec /path/to/my/python2.6 /home/aUser/scriptLocation/theScript.py

【讨论】:

  • 我认为他希望在这里使用 2.7,而不是 2.6(尽管问题有点不清楚),但除此之外,请注意。
  • 谢谢!明天早上我会试试。 abarnert 关于版本是正确的。这是我的错,因为我在问题中打错了字,所以它变得相当不清楚。但我明天会试试你的方法,如果可行,然后将你的评论标记为答案。
猜你喜欢
  • 1970-01-01
  • 2017-08-01
  • 2016-08-24
  • 1970-01-01
  • 2013-03-30
  • 2019-04-19
  • 2010-11-28
  • 2013-05-01
  • 1970-01-01
相关资源
最近更新 更多