QProcess 似乎忽略了环境变量?

问题描述 投票:0回答:1

我有一些代码可以在系统默认文本编辑器中打开文本文件。该功能获取程序的绝对路径并执行它,效果很好。但是,我想为用户提供覆盖此功能并执行自己的命令的选项,例如,他们可以在设置菜单中的某处输入

notepad++ %F
,然后应用程序将执行
notepad++ [path here]

根据我的测试,以这种方式准备参数的效果非常好,但由于某种原因,即使将其放置在 PATH 中,它也找不到可执行文件。

示例代码:

from PySide6.QtWidgets import QApplication
from PySide6.QtCore import QProcess

app = QApplication()

process = QProcess()
process.setEnvironment(QProcess.systemEnvironment()) # printing the environment vars shows that PATH is there and fully intact

process.setProgram("notepad++")
process.setArguments(["path/to/file.txt"])

process.errorOccurred.connect(lambda error: print(f"Error: {error}"))
process.startDetached() # process.start() gives same result

app.exec()

这将返回

ProcessError.FailedToStart
。使用相同的参数直接在命令提示符中执行命令效果很好。

我也尝试过使用

QStandardPaths.findExecutable
,但没有找到任何东西。我还尝试过多个程序以及程序名称末尾有/没有
.exe

python environment-variables pyside pyside6 qprocess
1个回答
0
投票

回答可以通过接受来关闭此:

不知道为什么,但它刚刚开始工作。我什么也没改变。哦,好吧...无论如何,感谢您提供的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.