gpt4 book ai didi

Python子进程调用powershell在pycharm IDE中不返回

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:31 25 4
gpt4 key购买 nike

我正在使用 pycharm IDE 进行开发。当使用 pycharm IDE 调试以下调用 powershell 脚本的简单 python 程序时,它似乎没有返回并且卡在 powershell 中。但是,如果只是在命令行 (python callps.py) 上运行它,它会运行并返回。我看到有人报告了一个问题:https://youtrack.jetbrains.com/issue/PY-12088但它还没有解决,也没有这方面的更新。任何人都有解决此问题的提示,谢谢。云人。

Powershell 脚本:samplePowerShell.ps1:

$x = 1
$y = 2
return $x, $y

python 脚本:callps.py:

import subprocess
cmd = ['powershell', '-ExecutionPolicy', 'RemoteSigned', '-File', 'samplePowerShell.ps1']
returncode = subprocess.call(cmd)
print "Done"

最佳答案

Windows 进程具有三个标准句柄,分别名为 StandardInputStandardOutputStandardError。它们通常是控制台 I/O、管道或磁盘文件的句柄。通常它们是从父进程继承的,或者隐式地或者通过显式地在 STARTUPINFO 中设置它们。 parent 传递给CreateProcess .

PyCharm 可能使用管道标准 I/O 执行解释器。如果是这种情况,那么 PowerShell 会继承这些句柄并可能对输入管道进行阻塞读取。

要解决此问题,您可以向 PowerShell 提供自己的管道,然后 communicate .

import subprocess

cmd = ['powershell.exe',
'-ExecutionPolicy', 'RemoteSigned',
'-File', 'samplePowerShell.ps1']
p = subprocess.Popen(cmd,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = p.communicate()
returncode = p.wait()
print returncode

关于Python子进程调用powershell在pycharm IDE中不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26894144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com