2013-01-13 25 views
11

Ich habe Code getestet, der Root-Zugriff in pyCharm durch Ausführen von sudo pycharm.sh erfordert, aber das ist nicht die Art, wie ich es empfehlen würde.Debugging in pyCharm mit Sudoprivilegien?

Ich weiß, dass es möglich ist, mit Sudo-Berechtigungen zu debuggen, indem Sie den Python-Interpreter als Sudo in pyCharm ausführen, aber wie machen wir das?

+0

haben Sie endlich das Problem zu lösen?Wenn ich sudo pycharm.sh ausführe, wird das pycharm neu installiert und neu konfiguriert ... –

Antwort

7

Erstellen Sie ein Shell-Skript, das "sudo python" ausführt und die Argumente weiterleitet, und konfigurieren Sie dieses Skript als Python-Interpreter in PyCharm.

Der Name dieses Shell-Skripts sollte mit python beginnen (Quelle: http://forum.jetbrains.com/message/PyCharm-424-3).

+4

Sorry, Leute, können Sie mir mehr über diese Lösung erzählen? Ich dachte, du meinst sh-Skript, aber PyCharm gibt keine Möglichkeit, es als Python-Interpreter zu verwenden. Vielen Dank. – bellum

+0

@bellum Ich habe die Antwort behoben. – rominf

+1

Signale von PyCharm sind verloren ... Die Stopp-Taste funktioniert nicht mehr und du bekommst Zombies –

3

Für was es wert ist, ich habe ein Python-Skript mit sudo priviledges verwaltet laufen (auf Ubuntu 16.04) wie folgt aus:

  1. In der ersten Zeile im Skript, definieren den Interpreter wie folgt aus:

    #!/usr/bin/sudo python

  2. Machen Sie das ausführbare Skript:

    chmod +x myscript.py

  3. Führen Sie das Skript direkt, ohne unter Angabe der python Interpreter selbst:

    ./myscript.py

  4. Das Skript für sudo Passwort gefragt wird und weiterhin mit erhöhten Privilegien laufen.
-1

Terminal:

Sudo ./Pycharm 

diese Weise können Sie PyCharm als Super-User-

2

begegne ich habe eine andere Art und Weise beginnen können, dieses Problem zu lösen, so dass ich es zu teilen gedacht (diese Antwort ist eher wie eine alternative für die anderen Antworten).

Es ist erwähnenswert, dass diese Lösung das Problem "attackiert", indem nur ein bestimmtes Python-Skript (innerhalb der pycham-IDE) im root-Modus und nicht die gesamte pycharm-Anwendung ausgeführt wird.

1) Deaktivieren Sie Kennwort erforderlich für Python ausgeführt wird:

Dies wird durch die Bearbeitung der /etc/sudoers.d/python Datei achived werden.Was wir tun müssen, ist einen Eintrag in der Datei hinzufügen, wie folgt:

Benutzer host = (root) NOPASSWD: full_path_to_python, zum Beispiel:

guya ubuntu = (root) NOPASSWD/usr/bin/python

NOTES:

Benutzer kann durch den Befehl festgestellt werden: whoami

Host durch den Befehl festgestellt werden kann: Hostnamen

2) Erstellen Sie einen „sudo Skript“: Der Zweck dieses Skripts ist Privileg zu geben, Python als Root-Benutzer ausgeführt werden.

Erstellen Sie ein Skript python-sudo.sh genannt, und fügen Sie den folgenden hinein:

/bin/bash

sudo/usr/bin/python "$ @"

Hinweis Auch hier ist der Pfad der Pfad zu Ihrem Python wie in der vorherigen Phase.

Vergessen Sie nicht, die Ausführung Berechtigungen Thsi Skript zu geben, den Befehl: chmod

chmod + x python-sudo.sh

3) Verwenden Sie das python-sudo.sh Skript als PyCharm interpeter:

Innerhalb PyCharm gehen zu: Datei -> Einstellungen -> Projekt Interpreter

auf der rechten oberen Seite klicken Sie auf die „Einstellung“ Symbol und klicken Sie auf „local hinzufügen“.

In der Browser-Option wählen Sie das Python-sudo.sh-Skript, das wir zuvor erstellt haben. Dadurch erhält pycharm die Berechtigung, ein Python-Skript als root auszuführen.

4) Testen Sie den Test: Alles, was noch zu tun ist, ist das Debuggen des spezifischen Python-Skripts in der pycharm-IDE. Dies kann einfach per Rechtsklick auf das Skript zu debuggen -> hit "Debug sample_script_to_debug.py"

Ich hoffe, es war hilfreich und lassen Sie mich wissen, wenn es irgendwelche Fehler in diesem Ansatz sind.

Prost,

Guy.

+0

Beachten Sie, dass ich #!/Bin/bash innerhalb der python-sudo.sh Skript (aus irgendeinem Grund wird es so angezeigt). –

0

löste ich dieses Problem, indem /usr/bin/python3 in meinem Hause zu kopieren, dann cap_net_bind_service Fähigkeit Einstellung:

cp /usr/bin/python3 ~/python35-setcap 
sudo setcap 'cap_net_bind_service=+ep' ~/python35-setcap 

Und dann ~/python35-setcap als Python-Interpreter in PyCharm verwenden.

Auf diese Weise können Sie untere Ports binden, aber nicht jedes Python 3-Programm kann es tun, und Pycharm kann immer noch Ihr Skript töten. Sie können die Ausführungsberechtigung auch auf sich selbst beschränken, wenn Sie mehr Sicherheit wünschen.