A partire da questo post (28 giugno 2018) eseguo Pycharm-2018.1.4 su Ubuntu 18.04 Bionic Beaver. La soluzione che ha funzionato per me è stata semplicemente modificare il sudoers.d
file e aggiungere quanto segue all'ultima riga:
user host = (root) NOPASSWD: full_path_to_python
ad esempio:
guya surface-pro = (root) NOPASSWD /usr/bin/python3.6
Avevo la necessità di eseguire uno script da PyCharm come root come l'OP, ma la risposta accettata non ha funzionato per me perché 1.) Avevo installato PyCharm tramite flatpak e 2.) Il gksu
command non è disponibile nelle versioni più recenti di Ubuntu e Mint.
Non sono riuscito a trovare un modo per far funzionare le cose in modo coerente con l'installazione di flatpak, quindi ho disinstallato PyCharm flatpak e quindi reinstallato PyCharm nel modo "normale". La risposta accettata si basa sul gksu
comando che non è disponibile sul mio sistema operativo (Mint 19.2). Per fortuna pkexec
è un'alternativa adatta ed era già disponibile sul mio sistema. Ho quindi aggiornato il mio file di avvio (~/.local/share/applications/PyCharm.desktop) come segue. Il bit importante è il Exec
riga:
[Desktop Entry]
Name=PyCharm
Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /opt/pycharm-community-2019.2.2/bin/pycharm.sh
Comment=PyCharm
Terminal=false
Icon=/opt/pycharm-community-2019.2.2/bin/pycharm.png
Type=Application
Il pkexec
comando farà apparire un popup che richiede la tua password ogni volta che avvii PyCharm tramite .desktop
file.
Ho incontrato un altro modo per risolvere questo problema, quindi ho pensato di condividerlo (questa risposta è più simile a un'alternativa per le altre risposte).
Vale la pena ricordare che questa soluzione "attacca" il problema eseguendo solo un determinato script Python (all'interno dell'IDE PyCharm) in modalità root e non l'intera applicazione PyCharm.
1) Disattiva richiesta di password per l'esecuzione di Python:
Ciò sarà ottenuto modificando il /etc/sudoers.d/python
file. Quello che dobbiamo fare è aggiungere una voce in quel file come segue:
user host = (root) NOPASSWD: full_path_to_python
, ad esempio:
guya ubuntu = (root) NOPASSWD /usr/bin/python
NOTE:
user
può essere rilevato dal comando:whoami
host
può essere rilevato dal comando:hostname
2) Crea uno "sudo script":lo scopo di questo script è dare a python il privilegio di essere eseguito come utente root.
Crea uno script chiamato python-sudo.sh
e aggiungi quanto segue:
!#/bin/bash
sudo /usr/bin/python "[email protected]"
Nota, ancora una volta, che il percorso è il percorso del tuo Python come la fase precedente.
Non dimenticare di dare i permessi di esecuzione a questo script usando il comando:chmod
, cioè-
chmod +x python-sudo.sh
3) Usa il python-sudo.sh
script come interprete PyCharm:
All'interno di PyCharm vai a:File --> Settings --> Project interpreter
In alto a destra, fai clic sull'icona "impostazioni" e fai clic su "Aggiungi locale".
Nell'opzione del browser scegli python-sudo.sh
script che abbiamo creato in precedenza. Questo darà a PyCharm il privilegio di eseguire uno script python come root.
4) Debug il test:tutto ciò che resta da fare è effettivamente eseguire il debug dello script Python specifico nell'IDE PyCharm. Questo può essere fatto facilmente facendo clic con il pulsante destro del mouse sullo script di cui eseguire il debug --> premi "Debug sample_script_to_debug.py"
Spero di esserti stato utile e fammi sapere se ci sono errori in questo approccio.
Ragazzo.
Prova:gksudo ./path/to/pycharm/executable
Ulteriori informazioni su gksudo
Se sei su Ubuntu e non hai gksudo
installalo usando:
apt-get install gksu
Ecco un esempio di configurazione del programma di avvio (sotto:~/.local/share/applications/jetbrains-pycharm-ce.desktop
):
[Desktop Entry]
Version=1.0
Type=Application
Name=PyCharm Community Edition
Icon=/home/YOUR_USER/pycharm/bin/pycharm.png
Exec=gksudo -k -u root "/home/YOUR_USER/pycharm/bin/pycharm.sh" %f
Comment=Develop with pleasure!
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-pycharm-ce
ce
indica l'edizione della community, la tua potrebbe essere diversa.