如何运行program2.py并关闭program1.py?及Python跨文件调用失败排查
解决方案:启动同目录Python脚本并退出当前程序
一、解决os.system找不到文件的问题
你遇到的找不到文件的问题,本质是直接执行.py文件时,系统不知道用什么解释器去运行它,哪怕文件在同目录,也需要明确指定Python解释器:
import os import sys # 替换原os.system调用,明确用python(或python3,根据你的环境)执行脚本 os.system("python main_newFile.py") sys.exit()
如果是Linux/macOS环境,也可以用./main_newFile.py,但前提是给脚本加执行权限(chmod +x main_newFile.py),并且在脚本开头加shebang行(#!/usr/bin/env python3),不过这种方式不如直接调用解释器通用。
二、更可靠的方法:用subprocess.Popen后台启动新进程
os.system会阻塞当前程序,直到新脚本执行完毕才会继续,这意味着你的main.py要等main_newFile.py关闭才会退出,不符合需求。推荐用subprocess.Popen,它可以后台启动新进程,让main.py直接退出:
import subprocess import sys # 启动新脚本,不阻塞当前进程 subprocess.Popen(["python", "main_newFile.py"]) # 立即退出当前程序 sys.exit()
如果是Windows平台,想要确保新进程完全独立不受当前进程退出影响,可以加上专属参数:
subprocess.Popen(["python", "main_newFile.py"], creationflags=subprocess.CREATE_NEW_CONSOLE) sys.exit()
三、为什么加载图片没问题?
Tkinter加载图片用的是Python解释器的当前工作目录(CWD),这个目录和脚本所在目录一致,所以能找到文件。但os.system/subprocess执行的是shell命令,问题出在直接调用.py文件时缺少解释器关联,而非路径找不到。
内容的提问来源于stack exchange,提问作者Chris Bustamante
相关产品推荐
相关产品推荐

