【问题标题】:QProcess can launch programs but not python (command line)QProcess 可以启动程序但不能启动 python(命令行)
【发布时间】:2017-07-24 14:07:40
【问题描述】:

以下代码无法启动 python 命令行。

QProcess *myProcess = new QProcess(this);
myProcess->start("\"C:\\Program Files\\Python27\\python.exe\"");

如果我用(例如)替换 python27

myProcess->start("\"C:\\Program Files\\Notepad++\\notepad++.exe\"")

记事本打开。为什么我的程序可以启动记事本,但不能启动 Python 命令行?

我尝试按照here 的建议使用 startDetached() ,但这并没有什么不同。

QProcess::Error() 给我错误 5:未知错误。

【问题讨论】:

  • 你到底想用python做什么? python.exe 是解释器二进制文件,所以如果你想运行一个特定的 .py 脚本,你需要将它作为参数传递给 python,但是从命令行(运行 cmd.exe 行而不是 python 与 'python script.py' as论据)
  • @t020608 你确定python.exe 运行正常吗?喜欢双击它?
  • @Lucian 现在我只是想看看我是否可以打开 python。从长远来看,我想执行在我的 Qt GUI 中创建的 python 脚本(最好能够监控进度并暂停脚本)。那我应该使用命令行吗?
  • 我刚刚在 Qt5.5 和 python 3.6 中运行了你的代码。 myProcess->start(...) 什么都没有发生,但 QProcess::startDetached(...) 工作。你确定路径是正确的吗?也许python安装在C:\Program Files (x86)而不是C:\Program Files。你确定你没有犯任何拼写错误吗?
  • @pschill 我确定我的路径是正确的,因为我可以使用system("start C:\\Python27\\python.exe"); 启动 python(我更改了 Python27 文件夹的位置)

标签: c++ qt qprocess


【解决方案1】:

如果您只想使用“python 控制台”,则必须使用 windows 中的 cmd.exe 应用程序
您必须在 PATH 中有 python,以便 Windows 控制台知道从哪里获取它。
所以,你可以试试:QProcess::startDetached("cmd", "python")..查看更具体的语法细节here

【讨论】:

  • 我试过这个,但打开命令提示符也不起作用。我已经尝试过 QProcess::startDetached("cmd.exe") 以及完整路径作为参数(“C:\Windows\system32\cmd.exe”)。任何想法为什么它在 this person 工作时对我不起作用??
  • @t020608 如果你是 64 位,你可以试试 "C:\Windows\SysWOW64\cmd.exe" .... 检查stackoverflow.com/questions/39732079/…
【解决方案2】:

我似乎误解了当您启动命令行时会发生什么。我期待 python 命令行或命令提示符窗口打开。

事实证明,如果我像这样将命令作为参数 start() 传递:

 myProcess->start("cmd.exe /C python C:\\Users\\SP4\\Desktop\\helloworld.py");

命令提示符运行我的 python 脚本,我使用以下命令获取输出(“Hello World”):

QString output = myProcess->readAllStandardOutput();

所有这些都发生在后台,您实际上看不到命令​​行窗口打开并打印出“Hello, World”。

如果我误解了什么,请纠正我。

【讨论】:

    猜你喜欢
    • 2013-01-16
    • 2017-11-21
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多