在具有相同 python 版本的脚本中重新启动 python 脚本

Restart of python script within script with same python version

我正在 运行 在服务器上安装一个 python 程序,我在服务器上的帐户中在 .bashrc 文件中设置了 python 版本,如下所示:

alias python="python2.7"

我有一个 python 脚本,我希望它能够自行重启。它在本地工作正常,但是当我在服务器上重新启动它时,它工作了一次,然后切换到不同版本的python。我有以下功能:

def restartScript(self):
  print("Restarting server")
  print(sys.executable,['python']+sys.argv)
  os.execv(sys.executable,['python']+sys.argv)

我第一次尝试重新启动时打印如下:

/usr/local/bin/python2.7 ['python', 'server.py']

但是我第二次 运行 服务器,它打印以下内容:

/usr/local/bin/python ['python', 'server.py']

这也会报错,因为我正在使用为 /usr/local/bin/python2.7 安装但未为 /usr/local/bin/python 安装的模块。

有没有一种简单的方法可以确保服务器始终以 /usr/local/bin/python2.7 重新启动?我想让它变得灵活,以便有人可以使用此重新启动,无论他们是否在 .bashrc 中定义了 python 的默认版本或正在使用虚拟环境。如果他们使用 python 3 或 python 2.

,也希望它能正常工作

我觉得我可能误解了什么,但我认为您只想传递 'python2.7' 作为参数列表的第一个元素而不是 'python'。或者,如果您不确定可执行文件的名称是什么,请传递 sys.executable.

以下作品独立于您使用的 python 版本:

os.execv(sys.executable,[sys.executable.split("/")[-1]]+sys.argv)