Aktualizace: Zkontroloval jsem všechny metody, všechny fungují.
1:
Vyžádejte si heslo pomocí getpass module
což v podstatě skryje vstup uživatele a poté spustí příkaz sudo v pythonu.
import getpass
import os
password = getpass.getpass()
command = "sudo -S apt-get update" #can be any command but don't forget -S as it enables input from stdin
os.system('echo %s | %s' % (password, command))
2:
import getpass
import os
password = getpass.getpass()
command = "sudo -S apt-get update" # can be any command but don't forget -S as it enables input from stdin
os.popen(command, 'w').write(password+'\n') # newline char is important otherwise prompt will wait for you to manually perform newline
POZNÁMKA k výše uvedeným metodám:
Pole, do kterého zadáváte heslo, se v ipythonnotebooku nemusí objevit. Objeví se v okně terminálu na Macu a představuji si, že se objeví v příkazovém shellu na PC. V terminálu se zobrazí i podrobnosti o výsledku.
3:
Své heslo si můžete uložit do mypasswordfile
soubor a zadejte do buňky :
!sudo -S apt-get install blah < /pathto/mypasswordfile # again -S is important here
Tuto metodu bych preferoval, pokud chci zobrazit výstup příkazu v samotném notebooku jupyter.
Odkazy:
-
Vyžadování hesla v notebooku IPython
-
https://docs.python.org/3.1/library/getpass.html
- Používání sudo se skriptem Python
Proměnné pythonu můžete předávat z poznámkového bloku do shellu, aniž byste museli importovat os
nebo subprocess
moduly pomocí syntaxe {varname} (např. tento skvělý blog).
Pokud jste definovali heslo a proměnnou příkazu v pythonu (viz odpověď Suparshva), můžete spustit tento jednoduchý řádek:
!echo {password}|sudo -S {command}
Vykřičník říká jupyteru, aby jej spustil v shellu, echo
příkaz pak získá skutečné heslo (např. 'funkymonkey') z proměnné nazvané password
a pak to přenést do sudo'd command
proměnná (což je řetězec, který popisuje příkaz shellu, např. 'apt-get update').
Můžete
subprocess.Pope(['sudo', 'apt-get', 'install', 'bla'])
Pokud se chcete vyhnout syntaxi pythonu, můžete si definovat vlastní buněčnou magii, která to udělá za vás (např. %sudo apt-get install bla
).