我正在尝试让Python脚本自动下载自己的更新版本,替换现有版本,然后自动重新启动,以便加载新版本。
我目前正在使用以下代码重新启动它:
os.execv(__file__, sys.argv)然而,这是行不通的。每当Python试图运行这一行时,它都会返回以下错误:
Traceback (most recent call last):
File "N:\CardDB\Station\Read.py", line 195, in <module>
else:
File "N:\CardDB\Station\Read.py", line 187, in run_update
print("\n\nWould you like to install this update?")
File "N:\CardDB\Station\Read.py", line 144, in update
f.write(version)
OSError: [Errno 8] Exec format errorStackOverflow上的其他问题表明,这是由于缺少了一条谢邦行,但我已经确定它没有丢失--我的脚本的第一行是:
#!/usr/bin/env python3发布于 2018-03-06 12:51:38
与unix OSes不同,Windows似乎不支持解释的可执行文件。os.execv需要二进制文件并失败,因为它被赋予了一个文本文件。因此,与其直接调用脚本,不如调用python解释器。
os.execv(sys.executable, [sys.executable, __file__] + sys.argv)例如,在Linux上,如果脚本被标记为可执行文件并包含一个shebang行,则可以使用os.execv(__file__, [__file__] + sys.argv)。对于不可执行的脚本,您必须像上面那样调用python可执行文件。
https://stackoverflow.com/questions/49130575
复制相似问题