【发布时间】: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