Strona 1 z 1

[python] Uruchamianie skryptu

: 05 mar 2013, 20:17
autor: marcin0x02
Witam,

Mam problem z uruchomieniem skryptu python w konsoli przez wydanie polecenia:

Kod: Zaznacz cały

./nazwa_pliku
otrzymuje błąd:

Kod: Zaznacz cały

: Nie ma takiego pliku ani katalogu
Skrypt uruchamia się bez błędnie przez:

Kod: Zaznacz cały

python nazwa_pliku
. W pierwszej linii skryptu mam:

Kod: Zaznacz cały

#!/usr/bin/env python
Jest to skrypt to parsowania xml, inne skrypty skrypty mogę uruchamiać bez problemu przez ./nazwa_pliku. Co jest nie tak?

Re: [python] Uruchamianie skryptu

: 05 mar 2013, 22:48
autor: mario_7
Uprawnienia. Zapewne nie nadałeś prawa do wykonywania pliku - stąd taki błąd.

Re: [python] Uruchamianie skryptu

: 05 mar 2013, 23:22
autor: marcin0x02
Nadałem uprawnienia do wykonywania.

Re: [python] Uruchamianie skryptu

: 06 mar 2013, 10:00
autor: ethanak
Zobacz czy nie masz literówki w shebangu - ostatnio ktoś miał identyczny problem.

Re: [python] Uruchamianie skryptu

: 06 mar 2013, 19:35
autor: marcin0x02
Literówki też nie mam.

Re: [python] Uruchamianie skryptu

: 06 mar 2013, 21:12
autor: mario_7
Fakt, przy braku uprawnień pojawia się błąd typu "permission denied".

A polecenie:

Kod: Zaznacz cały

/usr/bin/env python
uruchamia interpreter pythona?

Można też spróbować podać ścieżkę bezpośrednią do binarki:

Kod: Zaznacz cały

#!/usr/bin/python

Re: [python] Uruchamianie skryptu

: 07 mar 2013, 07:06
autor: ethanak
W takim razie jak nie ma błędu to pewnie czarna magia - zabij czarnego koguta i tak dalej...
Chociaż ja bym na Twoim miejscu pokazał owo niewątpliwe arcydzieło w Pythonie kunsztownie spisane - być może chochlik jakowyś cnym programistym przeszkodzić chcąc literkę jakowąś zamienił...
Chyba że się wstydzisz.

Re: [python] Uruchamianie skryptu

: 07 mar 2013, 18:33
autor: marcin0x02

Kod: Zaznacz cały

#!/usr/bin/env python

from xml.dom.minidom import parse
import xml.dom.minidom

def printLibrary(library):
  books = myLibrary.getElementsByTagName("book")
  for book in books:
    print "*****Ksiazka*****"
    print "Tytul: %s" % book.getElementsByTagName("title")[0].childNodes[0].data
    for author in book.getElementsByTagName("author"):
      print "Autor: %s"  % author.childNodes[0].data


# Otworz plik XML i dokonaj jego konwersji do DOM.
myDoc = parse('biblioteczka.xml')
myLibrary = myDoc.getElementsByTagName("library")[0]

# Pobierz wszystkie elementy book.
books = myLibrary.getElementsByTagName("book")

# Wyswietl tytuly i autorow ksiazek.
printLibrary(myLibrary)

# Wstaw nowa ksizke.
newBook = myDoc.createElement("book")
newBookTitle = myDoc.createElement("title")
titleText = myDoc.createTextNode("Python. Receptury")
newBookTitle.appendChild(titleText)
newBook.appendChild(newBookTitle)

newBookAuthor = myDoc.createElement("author")
authorName = myDoc.createTextNode("Alex Martelli i inni")
newBookAuthor.appendChild(authorName)
newBook.appendChild(newBookAuthor)

myLibrary.appendChild(newBook)

print "Dodano nowa ksizke!"
printLibrary(myLibrary)

# Usun ksiazke.
# Znajdz ksiazke.
for book in myLibrary.getElementsByTagName("book"):
  for author in book.getElementsByTagName("author"):
    if author.childNodes[0].data.find("Pratchett") != -1:
      removedBook= myLibrary.removeChild(book)
      removedBook.unlink()

print "Usunieto ksizke."
printLibrary(myLibrary)

# Zapisz dane do pliku biblioteczki.
lib = open("biblioteczka.xml", 'w') 
lib.write(myDoc.toprettyxml("  "))
lib.close()

Re: [python] Uruchamianie skryptu

: 08 mar 2013, 00:36
autor: beluosus
Na pewno jesteś w katalogu ze skryptem? Masz zainstalowanego pythona? Jeśli tak to przekopiuj takie polecenia do konsoli i napisz co Ci wyświetliło:

Kod: Zaznacz cały

echo -e '#!/usr/bin/env python\nprint "test"' > tescik.py
chmod 777 tescik.py
ls -l tescik.py
./tescik.py