【问题标题】:Why would an "command not recognized" error occur only when a window is populated?为什么只有在填充窗口时才会出现“命令无法识别”错误?
【发布时间】:2008-11-12 09:38:53
【问题描述】:

我的记录表应用程序有一个用于创建新的空白记录表的菜单选项。当我打开一个工作表窗口时,我可以毫无问题地打开新窗口,使用 subprocess.Popen() 来做到这一点。

但是,在 Windows 下(我还没有在其他操作系统上测试过),如果我打开一个新窗口然后使用“打开文件”对话框用文件中的数据填充字段,我将无法再创建新窗口。填充后,Windows 会给我

'foo.py' 不是内部或外部命令,可操作 程序或批处理文件。

我不明白什么会导致 Windows 突然无法识别 Popen() 调用。据我所知,我没有任何代码会以任何方式影响它。

【问题讨论】:

    标签: python windows


    【解决方案1】:

    从错误消息来看,您似乎需要将“foo.py”的完整路径传递给您的 Popen 调用。通常只有“foo.py”会在你当前的工作目录中搜索,但这在 Windows 上可能有点不可预测,我发现。您的似乎在打开文件对话框中跳来跳去。

    其次,为了更好地衡量,您似乎需要将 foo.py 作为参数传递给 python.exe 可执行文件,而不是执行 foo.py 本身。同样,我将通过路径指定它。

    为了安全起见,像这样:

    subprocess.Popen([r'C:\Python2.5\python.exe', r'C:\path\to\foo.py'])
    

    【讨论】:

    • 另外,您的 PATH 环境变量可能没有在子进程中正确设置。
    【解决方案2】:

    建议的答案似乎已经解决了问题。我还意识到我需要使用 os.name 来确定正在使用的操作系统,然后我可以使用正确的路径格式来加载外部 Python 文件。

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 2020-03-16
      • 2021-05-21
      • 2011-10-25
      • 1970-01-01
      • 2021-05-29
      • 2022-06-20
      • 2020-08-15
      • 1970-01-01
      相关资源
      最近更新 更多