首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >os.execv返回OSError:[Errno 8] Exec格式错误

os.execv返回OSError:[Errno 8] Exec格式错误
EN

Stack Overflow用户
提问于 2018-03-06 12:13:06
回答 1查看 2.7K关注 0票数 2

我正在尝试让Python脚本自动下载自己的更新版本,替换现有版本,然后自动重新启动,以便加载新版本。

我目前正在使用以下代码重新启动它:

代码语言:javascript
复制
os.execv(__file__, sys.argv)

然而,这是行不通的。每当Python试图运行这一行时,它都会返回以下错误:

代码语言:javascript
复制
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 error

StackOverflow上的其他问题表明,这是由于缺少了一条谢邦行,但我已经确定它没有丢失--我的脚本的第一行是:

代码语言:javascript
复制
#!/usr/bin/env python3
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-06 12:51:38

与unix OSes不同,Windows似乎不支持解释的可执行文件。os.execv需要二进制文件并失败,因为它被赋予了一个文本文件。因此,与其直接调用脚本,不如调用python解释器。

代码语言:javascript
复制
os.execv(sys.executable, [sys.executable, __file__] + sys.argv)

例如,在Linux上,如果脚本被标记为可执行文件并包含一个shebang行,则可以使用os.execv(__file__, [__file__] + sys.argv)。对于不可执行的脚本,您必须像上面那样调用python可执行文件。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49130575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档