2010-12-17 6 views
5

pisząc Nautilus Script (na przykład za pomocą Pythona), ja obecnie jestem świadomy dwóch metod podstawowych debugowania:Metody debugować skrypty Ubuntu Nautilus napisanych w Pythonie

  1. użyciu (np Zenity) wyskakujące okienka, jak " wypisz "instrukcje".
  2. Przechwytywanie stderr i stdout w plikach tekstowych do późniejszego wykorzystania.

Metody te działają dość dobrze, ale podejrzewam, że istnieją skuteczniejsze metody, o których nie wiem. Czy ktoś może sugerować inne metody?

Edit:

Kontekst: Szukałem sposobów do debugowania skryptu Pythona uruchamiana z Ubuntu prawym menu kliknij Nautilusa.

Używanie cedric do ponownego uruchomienia nautilusa z opcją --no-desktop oznacza, że ​​stder i stdout stają się widoczne w oknie terminala. Jednak ten terminal nie wydaje się być użyteczny jako konsola pdb do debugowania (wydaje się, że jest tylko wyjściem).

W moich poszukiwaniach sposobu na uzyskanie dostępu do danych wejściowych i wyjściowych do procesu skryptu po uruchomieniu z menu prawego przycisku myszy, znalazłem informacje wymienione w mojej odpowiedzi poniżej.

(Również, podczas gdy zgadzam się, że testy jednostkowe i rejestrowanie jest najlepszą praktyką, będę argumentować, że jest jeszcze miejsce dla interaktywnego debugowania, szczególnie z małych skryptów.)

+0

Jeśli nie możesz użyć pdb, standardowego debuggera Python, możesz użyć [IPython] (http://ipython.scipy.org). – martineau

Odpowiedz

1

Unit-przetestować skrypty za pomocą PyUnit.

Będzie to bardziej skuteczne niż polecenie "drukuj" i będzie powtarzalne, aby zapobiec regresjom. Zmniejszy to również ryzyko pozostawienia tymczasowego kodu debugowania w skrypcie.

5

Wh co prosiłeś o to tylko, aby zobaczyć swoje wyjścia skryptów, które mogą być wykonywane przez ożywienia Nautilus z opcją --no-desktop:

$ nautilus -q 
$ nautilus --no-desktop 

ten sposób widać żadnych wyjść (stderr/stdout) wykonane przez skrypt lub przez tłumacz pythona. Powinien być użyteczny ...

+1

dzięki za nautilus - nano-pulpit, bardzo przydatne !! – khirod

1

Po wyszukaniu sposobu na interaktywne debugowanie skryptu Pythona uruchomionego z podmenu skryptów menu podręcznego Nautilus, znalazłem następujące rozwiązanie.

Można używać Wingide do słuchania i łączenia się z procesami zewnętrznymi. Dzięki temu możliwe jest wykorzystanie funkcji debugowania WingIDE w zewnętrznie uruchamianym kodzie, takim jak mój skrypt Python Nautilus.

Po prostu trzeba włączyć preferencję Wingide "Włącz pasywne nasłuchiwanie", a następnie skopiuj plik wingdbstub.py do katalogu skryptów. Dodałem następnie "import wingdbstub" do skryptu i ustaw punkt przerwania w kodzie skryptu, otwartego w Wing.

Po uruchomieniu skryptu z menu podręcznego Nautilus, proces został połączony z Wingide i mogłem wykorzystać wszystkie umiejętności debugowania Wingide'a.

Szczegółowe informacje tutaj: 5.12 Debugging Externally Initiated Processes.

0

Jak trick widzieć wyjście, a także współdziałać ze skryptem w terminalu, podzielić mój scenariusz w dwóch plikach (patrz pytanie How to execute a nautilus script written in Python inside a gnome-terminal window that stays open?):

  • ~/.local/share/nautilus/scripts/firstfile.sh który otwiera terminal, wykonuje skrypt w nim, i pozostawić je otwarte:

    #!/bin/bash 
    gnome-terminal -- bash -c "python3 ~/.local/share/nautilus/scripts/.secondfile.py; bash" 
    
  • ~/.local/share/nautilus/scripts/.secondfile.sh który zawiera rzeczywisty skrypt Pythona i jest ukryte przed Nautilus skryptu menu:

    #!/usr/bin/python3 
    print("Hello") 
    

Oczywiście jest to tylko dla podstawowego debugowania, ale może to być przydatne dla kogoś.

Powiązane problemy