QProcess 可以启动程序但不能启动 python(命令行)
Posted
技术标签:
【中文标题】QProcess 可以启动程序但不能启动 python(命令行)【英文标题】:QProcess can launch programs but not python (command line) 【发布时间】: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 文件夹的位置)
【参考方案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" .... 检查***.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”。
如果我误解了什么,请纠正我。
【讨论】:
以上是关于QProcess 可以启动程序但不能启动 python(命令行)的主要内容,如果未能解决你的问题,请参考以下文章