2013-03-06 13 views
6

Przeglądałem niektóre projekty Open Source w Pythonie i widzę wiele plików i wzorców, które nie są mi znane.Struktura plików Pythona na GitHub

Przede wszystkim, wiele projektów prostu masz plik o nazwie setup.py, który zazwyczaj zawiera jedną funkcję:

setup(blah, blah, blah) 

drugie, wiele zawiera pliku, który jest po prostu o nazwie __init__.py i zawiera prawie żadnych informacji .

Po trzecie, niektóre .py pliki zawierają oświadczenia podobnego do tego:

if __name__ == "__main__" 

Wreszcie, zastanawiam się, czy są jakieś „najlepsze praktyki” do dzielenia plików Python w repozytorium git. W przypadku języka Java idea podziału plików jest dość naturalna ze względu na strukturę klas. W Pythonie wiele skryptów nie ma żadnych klas, a czasami program będzie miał aspekty OOP, ale podział klas według klas nie ma większego sensu. Czy jest to po prostu "cokolwiek sprawia, że ​​kod jest najbardziej czytelny", czy są w nim jakieś wskazówki?

Odpowiedz

6

The setup.py jest częścią dystrybucji modułów Pythona przy użyciu distrubution utilities. Pozwala na easy installation z modułu Python i jest przydatna, gdy, no cóż, chcesz rozpowszechniać swój projekt jako cały moduł Pythona.

Urządzenie __init__.py jest używane w języku Python package system. Pusty plik jest zwykle wystarczający, aby Python rozpoznał katalog, w którym znajduje się jako pakiet, ale można w nim także zdefiniować różne rzeczy.

Na koniec, kontrola __name__ == '__main__' polega na upewnieniu się, że bieżący skrypt jest uruchamiany bezpośrednio (np. Z wiersza poleceń) i nie jest po prostu importowany do innego skryptu. Podczas wykonywania skryptu w języku Python tylko właściwość pojedynczego modułu __name__ będzie równa __main__. Zobacz także my answer here lub więcej general question na ten temat.

1

Urządzenie setup.py jest częścią procesu instalacji . Będziesz potrzebował jednego z nich, jeśli dystrybuujesz moduł zamiast zwykłego skryptu (który nawet wtedy jest dobrym pomysłem, aby można go było łatwo rozszerzyć do modułu później).

__init__.py część pytona module import process:

Pliki nazwane startowych .py są używane do oznaczenia katalogów na dysku jako Pythona katalogów pakietów. Jeśli masz pliki

mydir/spam/startowych .py mydir/spam/module.py i mydir jest na swojej drodze, można zaimportować kod w module.py jak:

importowej spam .module lub

z modułem importu spam Jeśli usuniesz Init plik .py Pythona nie będą już szukać submodules wewnątrz tego katalogu, więc próby zaimportować moduł zakończy się niepowodzeniem.

if __name == "__main__" to sposób wskazania kodu, który zostanie wykonany, jeśli plik został uruchomiony bezpośrednio, a nie importowany.

Aby odpowiedzieć na pytanie, w jaki sposób zaprojektować swój kod, dokumentacja distfiles ma numer good guide on this.

+0

Przepraszam pana, ale myślę, że popełniłeś błąd w 'if __name ==" __main __ "' zapomniałeś '__' po nazwisku. Ping me, gdy to zobaczysz, a ja usunę komentarz. –

2

Oprócz odpowiedzi @ poke, patrz: this related question na temat struktury katalogów projektu Pythona. Here to kolejny przydatny poradnik na temat łatwego uruchamiania aplikacji.

Powiązane problemy