2008-10-05 3 views
12

Wenn es um die Organisation von Python-Modulen geht, ist mein Mac OS X-System ein Durcheinander. Ich habe Pakete überall auf meiner Festplatte herumliegen und kein bestimmtes System, um sie zu organisieren.Wie organisieren Sie Python-Module?

Wie halten Sie alles überschaubar?

Antwort

12

Mein Rat:

+0

Eigentlich gehe ich noch einen Schritt weiter: Meine Site-Packages lassen sogar setsetools weg, da (a) ich es dort nicht brauche, (b) virtualenv eine mitgelieferte Kopie enthält, die es beim Erstellen jeder Umgebung verwenden kann, und (c) Einige Versionen von virtualenv verursachen Probleme für mich, wenn sie systemweit verfügbar sind. –

5

Zusätzlich zu PEP8 und easy_install sollten Sie sich virtualenv. Mit Virtualenv können Sie mehrere verschiedene Python-Bibliotheksbäume erstellen. Bei der Arbeit verwenden wir virtualenv mit einer Bootstrapping-Umgebung, um schnell eine Entwicklungs-/Produktionsumgebung einzurichten, in der wir alle w.r.t-Bibliotheksversionen usw. synchron sind. Im Allgemeinen koordinieren wir Bibliotheks-Upgrades.

+1

Das klingt wirklich interessant, könntest du das ein bisschen mehr erklären (und vielleicht ein virtualenv-Bootstrap-Skript als Beispiel veröffentlichen)? –

2

Ich halte alle die Quelle für meine Pakete innen ~/Packages /, und dann kann ich ein Standard mit „python2.5 Setup installieren .py installieren "auf ihnen. Dies führt zu (für mich) /Library/Frameworks/Python/Versions/current/lib/python2.5/site-packages/. Für die Entwicklung meiner eigenen Software habe ich Aliase eingerichtet, um zwischen trunk/branches/1.0 usw. zu wechseln, indem ich auf PYTHONPATH pre-prending. (Ich muss 'setup.py build_ext --inplace' in jedem dieser Verzeichnisse ausführen, bevor sie richtig importiert werden.)

Es ist erwähnenswert, dass Python2.6 hat eine per-user site-packages directory, die Sie bequemer finden können.

1

Mein Rat ist zu versuchen, alles in Ihre Website-Pakete Verzeichnis (s) zu setzen, es sei denn, Sie haben einen guten Grund nicht zu. Und ich versuche, easy_install zu vermeiden, weil ich finde, dass es dazu tendiert, meinen sys.path mit Eilagen zu zerquetschen, aber das bin nur ich. Manche Leute finden es nützlich.

Wenn Sie viele Programme haben, die verschiedene Bibliotheken verwenden, die Konflikte verursachen können, können Sie auch virtualenv ausprobieren.

5

Es gibt mehrere Familien von Python-Komponenten.

  1. Das Zeug, das mit Python kommt. Dies erledigt sich selbst.

  2. Das Zeug, das Sie mit easy_install bekommen haben. Dies ist auch für sich selbst gesorgt.

  3. Die Pakete, die Sie auf andere Weise bekommen mussten, entweder als TARballs oder SVN Checkouts. Erstellen Sie einen Components Ordner. Setze zuerst die Downloads oder die SVNs dort ein. Jedes Mal. Installiere von dort.

  4. Die Pakete, die Sie geschrieben haben, sind wiederverwendbar. Ich habe einen Projects Ordner mit jedem Projekt in diesem Ordner. Wenn das Projekt eine sehr wiederverwendbare Sache ist, hat es eine setup.py und ich laufe tatsächlich die Installation, als ob ich es heruntergeladen habe. Ich habe nicht viele davon, aber ein paar. Einige von ihnen könnten Open-Source-Projekte werden.

  5. Die endgültigen Anwendungen, die Sie schreiben. Ich habe einen Ordner in Projects mit jeder dieser Top-Level-Anwendungen. Dies sind normalerweise große, weitschweifige Dinge (wie Django-Sites) und haben keine setup.py. Warum? Sie sind oft ziemlich komplex mit nur wenigen zu verwaltenden Server-Installationen, und jede dieser Server-Installationen ist einzigartig. Diese beziehen sich im Allgemeinen auf PYTHONPATH, um ihre Teile zu identifizieren.

Beachten Sie das gemeinsame Thema. Entweder handelt es sich um heruntergeladene Komponenten oder um Projekte, an denen Sie gerade arbeiten.

Auch ich halte dies getrennt (in gewissem Maße) vom Client. Ich habe ein Hauptverzeichnis von Client-Ordnern, von denen jeder Projekte hat und jedes Projekt Verkäufe und Lieferung hat. Nicht alle Projekte haben Verkäufe und Verkäufe.

1

lief gerade auf dieser Seite von einer anderen Frage Stackoverflow: http://infinitemonkeycorps.net/docs/pph/ Diese Adressen mehr als nur Modul Platzierung, aber wenn Sie es schreiben platzieren, wie Sie leicht Dokumentation verarbeiten können, Prüfung und Verteilung.