【问题标题】:Python can't recognize command, but CMD canPython无法识别命令,但CMD可以
【发布时间】:2018-12-19 19:25:59
【问题描述】:

我已经安装了qpdf 并尝试通过 Python 调用它。

我已将路径添加到我的系统环境变量中,并且可以通过命令提示符成功运行以下命令:

qpdf --decrypt input.pdf output.pdf

运行,没有问题。

但是,当尝试通过 Python 调用时(代码来自 here),我得到了

'qpdf' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

import subprocess
subprocess.call(["cmd", "/c", "qpdf --decrypt input.pdf output.pdf"], shell=True)
# or 
subprocess.run(["qpdf", "--decrypt", "input.pdf", "output.pdf"], shell=True)
# or
subprocess.run(["qpdf --decrypt input.pdf output.pdf"], shell=True)

为什么我可以通过 cmd 运行,但不能在 Python 中运行?

【问题讨论】:

  • 确保您的 python 程序与 CMD 工作所在的目录相同。
  • 这可能是您在将qpdf 添加到PATH 之前使用的shell 会话。尝试从新会话运行 python。
  • 根据the docs "在 shell=True 的 Windows 上,COMSPEC 环境变量指定了默认的 shell。在 Windows 上您唯一需要指定 shell=True 的时候是您希望执行的命令内置在 shell 中(例如 dir 或 copy)。您不需要 shell=True 来运行批处理文件或基于控制台的可执行文件。"
  • @JMAA - 啊哈!我在安装qpdf 之前、期间和之后打开了 SublimeText。我退出并重新打开,它不再抛出错误。就是这样,谢天谢地,一个简单的修复:D
  • (@JMAA - 如果你想把它变成一个答案,去吧,我可以回答这个问题)

标签: python python-3.x cmd


【解决方案1】:

根据 cmets:

问题是环境变量仅在您启动可执行文件/shell会话/任何内容时加载。这里,PATH 环境变量中添加了一个目录,因此需要重新启动 sublime text 才能看到更新的PATH。这不是 sublime 特有的,如果您直接从终端或其他 IDE 运行,情况也是如此。

【讨论】:

    猜你喜欢
    • 2012-10-04
    • 2012-12-08
    • 2012-01-27
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    相关资源
    最近更新 更多