Zwei Optionen in setup.py developund installverwirren mich. Laut dieser Sitedevelop erstellt using einen speziellen Link zum Verzeichnis site-packages.
Die Leute haben vorgeschlagen, dass ich python setup.py installfür eine Neuinstallation und python setup.py developnach Änderungen an der Setup-Datei verwenden.
Kann jemand etwas Licht in die Verwendung dieser Befehle bringen?
python setup.py install wird verwendet, um Pakete (normalerweise von Drittanbietern) zu installieren, die Sie nicht selbst entwickeln / ändern / debuggen werden.
Für Ihre eigenen Aufgaben möchten Sie zuerst Ihr Paket installieren und dann den Code häufig bearbeiten können, ohne das Paket jedes Mal neu installieren zu müssen - und genau das python setup.py developtut es: Es installiert das Paket (normalerweise nur einen Quellordner). Auf eine Weise, die es Ihnen ermöglicht, Ihren Code nach der Installation in der (virtuellen) Umgebung bequem zu bearbeiten und die Änderungen sofort wirksam werden zu lassen.
Beachten Sie, dass die pip install .Installation (Installation) und pip install -e .(Entwicklerinstallation) zum Installieren von Paketen dringend empfohlen wird , da das setup.pydirekte Aufrufen für viele Abhängigkeiten, z. B. Pull-Vorabversionen und inkompatible Paketversionen, die falschen Dinge bewirkt oder die Deinstallation des Pakets erschwert pip.
Erik hat recht. Es ist auch nützlich zu wissen, dass es setup.py developeine --uninstallOption gibt, wenn Sie mit dem Hacken fertig sind.
Philadams
5
Der letzte Gedanke hier ist, dass eine andere Option setup.py developbeim Hacken eines Python-Pakets darin besteht, "einfache (aber explizite)
Pfadänderungen
4
Ich hatte Probleme beim python setup.py developVersuch, Ceilometer für die lokale Entwicklung einzurichten. pip install -e PATHAm Ende habe ich (innerhalb einer virtuellen Umgebung) verwendet, um Problemeeasy_install zu vermeiden , die über aufgetreten sind .
Joe D'Andrea
1
Ich bin mir nicht sicher, ob dies wichtig ist, aber wenn ich Python 3 usw. verwende, muss man dann python setup.py developanders laufen ?
Charlie Parker
1
Es funktioniert mit Python3, aber vergessen Sie nicht, die aktuelle Pip-Installation zu entfernen, da diese möglicherweise zusammenstößt (das ist mir im Moment passiert).
Léo Germond
124
Aus der Dokumentation . Das developPaket wird nicht installiert, es wird jedoch ein .egg-linkim Bereitstellungsverzeichnis zurück zum Projektquellcodeverzeichnis erstellt.
Es ist also wie beim Installieren, aber anstatt zu kopieren, site-packageswird ein symbolischer Link hinzugefügt (der .egg-linkfungiert als symbolischer Link für mehrere Plattformen).
Auf diese Weise können Sie den Quellcode bearbeiten und die Änderungen direkt anzeigen, ohne sie jedes Mal neu installieren zu müssen, wenn Sie eine kleine Änderung vornehmen. Dies ist nützlich, wenn Sie der Entwickler dieses Projekts sind, daher der Name develop. Wenn Sie nur das Paket eines anderen installieren, sollten Sie es verwendeninstall
IIUC sollten Sie nie setup.py developin Ihrem System, dies macht nur in einer virtuellen Umgebung Sinn.
Dividebyzero
2
@dividebyzero Meinst du, man sollte immer verwenden python setup.py develop --user, wenn ich richtig verstehe? Könnten Sie mir bitte sagen, wo das Paket mithilfe von installiert ist python setup.py develop --user? Vielen Dank!
ROBOT AI
2
Ich denke, das --userwird in einem Verzeichnis in Ihrem Home-Konto installiert und hat keine Auswirkungen auf andere Benutzer in Ihrem System. Das developwird Link zu Ihrem Projekt Quellverzeichnis machen , anstatt wirklich alles zu kopieren. develop --usersollte in Ordnung sein, und auch developin einer virtuellen Umgebung. Nur developauf das eigentliche System ist seltsam, weil Sie möglicherweise andere Benutzer haben, die etwas verwenden, das auf das Projekt in Ihrer persönlichen Kopie des Projektquellcodes verweist.
Dividebyzero
4
Viele (die meisten?) Leute laufen jedoch nicht auf Mehrbenutzersystemen
patstew
1
@boatcoder, Mac und Linux (und Windows) sind möglicherweise Mehrbenutzer- fähige Systeme, aber höchstwahrscheinlich ist der Entwickler das einzige (echte) Benutzerkonto seines Desktops, und ich glaube, das hat pastew gemeint.
setup.py develop
eine--uninstall
Option gibt, wenn Sie mit dem Hacken fertig sind.setup.py develop
beim Hacken eines Python-Pakets darin besteht, "einfache (aber explizite)python setup.py develop
Versuch, Ceilometer für die lokale Entwicklung einzurichten.pip install -e PATH
Am Ende habe ich (innerhalb einer virtuellen Umgebung) verwendet, um Problemeeasy_install
zu vermeiden , die über aufgetreten sind .python setup.py develop
anders laufen ?Aus der Dokumentation . Das
develop
Paket wird nicht installiert, es wird jedoch ein.egg-link
im Bereitstellungsverzeichnis zurück zum Projektquellcodeverzeichnis erstellt.Es ist also wie beim Installieren, aber anstatt zu kopieren,
site-packages
wird ein symbolischer Link hinzugefügt (der.egg-link
fungiert als symbolischer Link für mehrere Plattformen).Auf diese Weise können Sie den Quellcode bearbeiten und die Änderungen direkt anzeigen, ohne sie jedes Mal neu installieren zu müssen, wenn Sie eine kleine Änderung vornehmen. Dies ist nützlich, wenn Sie der Entwickler dieses Projekts sind, daher der Name
develop
. Wenn Sie nur das Paket eines anderen installieren, sollten Sie es verwendeninstall
quelle
Eine andere Sache, die Leute nützlich finden können, wenn sie die
develop
Methode verwenden, ist die--user
Option, ohne sudo zu installieren. Ex:anstatt
quelle
setup.py develop
in Ihrem System, dies macht nur in einer virtuellen Umgebung Sinn.python setup.py develop --user
, wenn ich richtig verstehe? Könnten Sie mir bitte sagen, wo das Paket mithilfe von installiert istpython setup.py develop --user
? Vielen Dank!--user
wird in einem Verzeichnis in Ihrem Home-Konto installiert und hat keine Auswirkungen auf andere Benutzer in Ihrem System. Dasdevelop
wird Link zu Ihrem Projekt Quellverzeichnis machen , anstatt wirklich alles zu kopieren.develop --user
sollte in Ordnung sein, und auchdevelop
in einer virtuellen Umgebung. Nurdevelop
auf das eigentliche System ist seltsam, weil Sie möglicherweise andere Benutzer haben, die etwas verwenden, das auf das Projekt in Ihrer persönlichen Kopie des Projektquellcodes verweist.