subprocess.call无法在PyCharm(linux)中工作

时间:2017-05-08 16:20:39

标签: python linux python-3.x subprocess pycharm

以下是该计划:

if os.name == 'posix' and getpass.getuser() != 'root':
  from subprocess import call

  call(["sudo", sys.executable, os.path.realpath(__file__), "--root-install"])

当我从终端运行它时工作正常:

> [sudo] Password for user:

但是当我从PyCharm运行时,终端只留空 我也尝试手动设置stdin=sys.stdin, stdout=sys.stdout,但这并未改变任何内容。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

PyCharm和IDE通常不喜欢getpass - 像输入一样。由于sudo以这种方式询问密码,因此无法从重定向的IDE控制台运行。

stdin重定向Popen也不会改变任何内容。

解决方法:从终端运行sudo命令。 xterm示例(抱歉,我对现在的终端了解不多):

call(["xterm","-e","sudo", sys.executable, os.path.realpath(__file__), "--root-install"])