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

跨设备迁移项目后,无法通过subprocess调用send_mess.py报错求助

解决方案

针对你遇到的两个FileNotFoundError,可以通过以下方式修复:

1. 修复代码示例

结合解释器路径和脚本绝对路径的问题,修改后的代码如下:

import sys
import os
import subprocess
import customtkinter

def mailing_launch(self):
    global p
    # 获取当前运行main.py的Python解释器绝对路径
    python_executable = sys.executable
    # 拼接send_mess.py的绝对路径(确保和main.py同目录)
    script_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'send_mess.py')
    # 启动并行子进程
    p = subprocess.Popen([python_executable, script_path])
    self.cancel_button.configure(state=customtkinter.NORMAL)
    self.start_button.configure(state=customtkinter.DISABLED)

2. 问题原因说明

  • 硬编码python:新电脑的环境变量可能未将Python加入PATH,或者默认Python命令为python3,导致系统找不到指定解释器。用sys.executable能确保调用当前运行主程序的Python版本,避免环境差异。
  • 直接调用send_mess.py:即使文件在同一项目文件夹,若启动main.py时的当前工作目录不是项目目录,相对路径会失效。通过os.path.abspath(__file__)获取主脚本的绝对目录,再拼接目标脚本路径,能保证无论从哪里启动都能找到文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:38:11