Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python subprocess.call在PyCharm(linux)中不工作_Python_Linux_Python 3.x_Subprocess_Pycharm - Fatal编程技术网

Python subprocess.call在PyCharm(linux)中不工作

Python subprocess.call在PyCharm(linux)中不工作,python,linux,python-3.x,subprocess,pycharm,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运行它时,终端将保持空白。 我还尝试

节目如下:

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,但这并没有改变任何事情


我做错了什么?

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

Popen
重定向
stdin
也不会改变任何东西

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


pycharm终端不支持sudo getpass方法。您可能想要
pexpect
:谢谢您的输入。我想给sudo提供密码,但是我该如何获得密码呢
getpass.getpass
在PyCharm中似乎也不起作用。不,
getpass
也需要原始终端。您可以尝试检测它,如果它不是一个正常的终端(测试hasattr(sys.stdin,“isatty”)),如果它不是一个正常的终端,则使用一些GUI,如wx或tk来提示输入密码(隐藏字母)
hasattr(sys.stdin,“isatty”)
总是
True
。在普通终端和PyCharms中。替代品?哦。Pyscripter是假的。可以也许hasattr(sys.stdin,“fileno”)起作用了!不漂亮,但我很高兴有解决办法。非常聪明!很高兴它起作用了!我想知道为什么我没早点想到。。。在这里运行windows。其他问题:)也有一些windows问题,但我知道如何解决这些问题,哈哈,linux黑客对我来说是新的。一个独立的python程序安装在依赖项上对我来说无疑是一个挑战。
call(["xterm","-e","sudo", sys.executable, os.path.realpath(__file__), "--root-install"])