我在服务器上运行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,也希望它能正常工作。
答案 0 :(得分:0)
我觉得我可能会误解某些内容,但我认为您只想将'python2.7'
作为参数列表的第一个元素而不是'python'
。或者,如果您不确定可执行文件的名称,请传递sys.executable
。
答案 1 :(得分:0)
以下工作独立于您使用的python版本:
os.execv(sys.executable,[sys.executable.split("/")[-1]]+sys.argv)