Python调用os.system执行register.py报错[Errno 2]无法打开注册窗口问题
报错原因
[Errno 2] No such file or directory 报错核心是系统无法在执行命令的上下文里找到目标文件或者可执行命令,对应你的代码有两个常见触发点:
- 工作目录不匹配:你运行当前主程序时的工作目录,和
register.py所在的目录不一致,os.system执行命令时默认基于当前进程的工作目录查找文件,不会主动识别主程序文件所在的目录。 - Python命令不兼容:部分系统(尤其是Linux、macOS或者配置了多Python版本的Windows)中,Python3的可执行命令是
python3而非python,系统找不到python命令也会抛出该错误。
修复方案
推荐用绝对路径定位文件+当前Python解释器执行的方案,兼容性最高,修改log_out方法的代码如下:
def log_out(self): import sys op=messagebox.askyesno("Confirm","Do you really want to logout?", parent=self.root) if op==True: self.root.destroy() # 获取当前主程序所在的绝对目录 current_root_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接register.py的绝对路径 register_file_path = os.path.join(current_root_dir, "register.py") # 用当前运行的Python解释器执行目标文件,避免命令不兼容 os.system(f'"{sys.executable}" "{register_file_path}"') else: pass
如果需要更稳定的进程调用,也可以用subprocess模块替代os.system:
import subprocess # 上面的路径拼接逻辑不变 subprocess.Popen([sys.executable, register_file_path])
验证步骤
修改后先确认register.py确实和当前主程序文件放在同一个文件夹下,再运行测试即可。
内容的提问来源于stack exchange,提问作者Mustufa Jawaid
相关产品推荐
相关产品推荐

