2009-06-23 12 views
14

Die einfachste Möglichkeit, mit Python-Paketinstallationen zu behandeln, war bisher, die Quelle aus dem Quellcodeverwaltungssystem auszuchecken und dann einen symbolischen Link in Python dist hinzuzufügen Packages Ordner.Python-Paket installieren mit Pip oder easy_install von Repos

Klar, da Source-Control bietet die vollständige Kontrolle, Downgrade, Upgrade auf jede Branche, Tag, es funktioniert sehr gut.

Gibt es einen Weg mit einem der Paket-Installer (easy_install oder Pip oder andere), kann man das gleiche erreichen.

easy_install ruft die Datei tar.gz ab und installiert sie mit der Installation setup.py, die im Ordner dist-packages in python2.6 installiert wird. Gibt es eine Möglichkeit, es zu konfigurieren, oder pip, um stattdessen das Versionskontrollsystem (SVN/GIT/Hg/Bzr) zu verwenden.

Antwort

26

Mit pip ist dies ziemlich einfach. Zum Beispiel:

pip install -e hg+http://bitbucket.org/andrewgodwin/south/#egg=South 

Pip wird die Quelle Repo automatisch klonen und führen Sie „setup.py entwickeln“, damit Sie es in Ihrer Umgebung zu installieren (was hoffentlich ein virtualenv). Git, Subversion, Bazaar und Mercurial werden alle unterstützt.

Sie können auch "pip freeze" ausführen und es wird eine Liste Ihrer aktuell installierten Pakete mit ihren exakten Versionen ausgegeben (einschließlich, für die Entwicklung, Installation, die genaue Revision vom VCS).Sie können dies direkt in eine Anforderungsdatei einfügen und später

pip install -r requirements.txt 

ausführen, um den gleichen Satz von Paketen in genau den gleichen Versionen zu installieren.

+0

Infact Ich benutze derzeit die Pip-Trunk, die mit der Deinstallation kommt, die Sie geschrieben haben. –

+0

Großartig. Ja, ich dachte mir, Sie hätten das unter Kontrolle, wollten aber sichergehen, dass diese Antwort jedem zugänglich ist, der die Frage beantwortet. –

11

Wenn Sie die Quelldistribution eines Pakets herunterladen oder auschecken - dasjenige, in dem sich "setup.py" befindet - dann, wenn das Paket auf den "setuptools" (die auch easy_install verwenden) basiert können in das Verzeichnis bewegen und sagen:

$ python setup.py develop 

und es wird die richtige Symlinks in dist-Pakete, so dass die Py-Dateien in der Source-Distribution sind diejenigen, die importiert werden, anstatt Kopien separat installiert (die erstellen ist, was "setup.py install" tun würde - erstellen Sie separate Kopien, die sich nicht sofort ändern, wenn Sie den Quellcode bearbeiten, um eine Änderung zu versuchen.

Wie die andere Antwort zeigt, sollten Sie versuchen, die "setuptools" -Dokumentation zu lesen, um mehr zu erfahren. "setup.py develop" ist ein wirklich nützliches Feature! Versuchen Sie es in Kombination mit einem virtualenv verwenden, und Sie können „setup.py entwickeln“ schmerzlos und ohne systemweite Python mit Paketen vermasselt Sie entwickeln auf vorübergehend:

http://pypi.python.org/pypi/virtualenv 
+2

+1: virtualenv ist wichtig, wenn Python Entwicklung – codeape

+0

virtualenv ist wesentlich <3 –

+3

Beachten Sie auch, dass "pip install -e." ist äquivalent zu "python setup.py develop", außer dass es auch mit Paketen funktioniert, die setup.tools nicht in ihrer setup.py verwenden (weil pip sie zwingt, sie trotzdem zu benutzen;>) –

4

easy_install hat die Unterstützung für das Herunterladen spezifischen Versionen. Zum Beispiel:

easy_install python-dateutil==1.4.0 

Wird v1.4 installieren, während die neueste Version 1.4.1 ausgewählt würde, wenn keine Version angegeben wurde.

Es gibt auch Unterstützung für Svn Checkouts, aber die Verwendung dieser bietet Ihnen nicht viel Nutzen von Ihrer manuellen Version. Weitere Informationen finden Sie im Handbuch oben.

Die Möglichkeit, zu bestimmten Zweigen zu wechseln, ist selten nützlich, es sei denn, Sie entwickeln die fraglichen Pakete, und dann ist es in der Regel keine gute Idee, sie trotzdem in Site-Paketen zu installieren.

+0

sollte es nicht python-dateutil = sein = 1.4.0 (doppelt gleich)? – typeoneerror

+0

ja sollte es. Ich habe es repariert. –

0

easy_install akzeptiert auch eine URL für den Quellbaum. Funktioniert zumindest, wenn die Quellen in Subversion sind.

Verwandte Themen