You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用os.execv重启Python程序时出现文件路径截断错误

问题解决:os.execv调用时路径因空格截断导致找不到__main__模块

问题原因

你的脚本路径包含空格(俄语“桌面”Рабочий стол中间有空格),当使用os.execv(sys.executable, ['python'] + sys.argv)时,Windows系统解析命令行参数会将空格后的部分视为独立参数,导致Python只接收到截断的路径c:\\Users\\user\\OneDrive\\Рабочий,并将其当作目录去查找__main__.py,最终报错。

解决方案

方案1:用完整解释器路径构造参数列表

将参数列表的第一个元素替换为sys.executable(Python解释器的完整路径),而非'python',保留sys.argv的完整参数:

import os
import sys

os.execv(sys.executable, [sys.executable] + sys.argv)

每个参数会被作为独立单元传递,带空格的路径不会被拆分。

方案2:给带空格的路径手动加引号

如果需要保留'python'作为参数列表的第一个元素,可将脚本路径用双引号包裹,确保系统将其识别为单个参数:

import os
import sys

# 给脚本路径添加双引号
quoted_script_path = f'"{sys.argv[0]}"'
# 构造参数列表:python + 带引号的路径 + 其他参数
os.execv(sys.executable, ['python', quoted_script_path] + sys.argv[1:])

方案3:使用os.execvp简化调用

os.execvp会自动处理路径的shell解析逻辑,无需手动处理空格问题:

import os
import sys

os.execvp(sys.executable, [sys.executable] + sys.argv)

内容的提问来源于stack exchange,提问作者Michael Townley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 02:36:18