Unterschied zwischen pip3 und 'python3 setup.py install' bezüglich des Befehls cmdclass

8

Ich habe versucht, mein Paket so zu konfigurieren, dass ein Skript während des Installationsprozesses ausgeführt wird. Daher habe ich geerbt von setuptools.command installieren und erstellt meine benutzerdefinierte Klasse ActionOnInstall , um Sachen zu tun, wenn das Paket installiert ist. Diese Klasse wird über setsetools setup() argument cmdclass wie beschrieben aufgerufen. hier .

Ein minimales Beispiel einer solchen setup.py Datei sieht wie

aus %Vor%

Erstellen des Pakets durch Ausführen von

%Vor%

wird erfolgreich ausgeführt, führt jedoch keine in ActionOnInstall.run() angegebenen Befehle aus. Rufen Sie diese setup.py direkt über

auf %Vor%

führt Befehle aus, die in ActionOnInstall.run() angegeben sind.

Dann habe ich mich gefragt: Was ist der tatsächliche Unterschied dieser beiden Ansätze, ein Paket zu installieren? Ich weiß, wie andere Posts uns erzählen, Pip macht das Leben leichter in Bezug auf die Paketinstallation. Aber wie diese beiden Ansätze das Argument cmdclass von setup() anders behandeln, wird nicht erklärt. Daher würde ich es sehr schätzen, von euch zu hören.

    
gplssm 22.05.2017, 22:33
quelle

2 Antworten

8

pip ruft Ihre setup.py auf, leitet aber stdout / stderr um. Um setup.py unter pip zu testen, schreibe in eine Datei an einem festen Ort:

%Vor%

Schauen Sie in /tmp/debug.log nach pip install .

    
phd 30.06.2017, 16:03
quelle
3

pip führt python setup.py install bei der Installation Ihres Pakets aus - es ändert nichts daran, wie Ihr Setup-Programm ausgeführt wird.

Der Grund, warum Sie keine Ausgabe sehen, ist, wie @phd erwähnt, dass pip standardmäßig die gesamte Ausgabe der setup.py -Datei ausblendet, da die meisten der gedruckten Informationen bei der Ausführung von python setup.py install für die meisten nicht nützlich sind Benutzer.

Sie können diese versteckte Ausgabe zusammen mit allem anderen Pip sehen, indem Sie die Option "--verbose" an pip install :

übergeben %Vor%     
pradyunsg 05.07.2017 06:24
quelle