2017-05-08 10 views
3

は、プログラムの端末は空白のままです。
stdin=sys.stdin, stdout=sys.stdoutを手動で設定しようとしましたが、何も変更されませんでした。はPyCharmで働いていないsubprocess.callする(Linux)ここで

私はここで間違っていますか?

+0

pycharm端子ははsudo GETPASS方式をサポートしていません。おそらく 'pexpect'が必要です:http://stackoverflow.com/questions/18046508/python-pexpect-pxssh-with-sudo-and-eof –

+0

ありがとう。私は 'sudo'にパスワードを提供することを考えましたが、どうすればそのパスワードを取得できますか? 'getpass.getpass'はPyCharmでも動作しません。 –

+0

でも、 'getpass'も元の端末が必要です。それを検出しようとする可能性があります。通常の端末ではない場合( 'hasattr(sys.stdin、" isatty ")'のテスト)、それが普通の端末でない場合は、wxやtkのようなGUIを使ってパスワードを要求します文字を隠す) –

答えて

1

PyCharmとIDEでは、通常、getpassのような入力が嫌いです。 sudoはこのような方法でパスワードを要求するので、リダイレクトされたIDEコンソールからは実行できません。

stdinからPopenへのリダイレクトは、いずれも変更されません。

回避方法:端末からsudoコマンドを実行してください。 xtermとの例は、(申し訳ありませんが、私は、最近の端末について多くを知らない):

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

作品!かなりではありませんが、私はちょうどそこに_some_解決が嬉しいです。非常に賢い! –

+0

うれしいです!なぜ私は早くそれを考えなかったのだろう...ここに窓を走らせる。その他の問題:) –

+0

いくつかのウィンドウの問題もありましたが、私は_hoseを回避する方法を知っています.Linuxのハックは新しいものです。依存関係を確実にインストールするスタンドアロンのPythonプログラムは、私の挑戦です。 –

関連する問題