Kompilieren und Installieren von C ausführbar mit python setuptools / setup.py?

8

Ich habe ein Python-Modul, das eine externe Binärdatei aufruft, die aus C-Quelle erstellt wurde.

Die Quelle für diese externe ausführbare Datei ist Teil meines Python-Moduls, verteilt als .tar.gz-Datei.

Gibt es eine Möglichkeit, die externe ausführbare Datei zu entpacken, zu kompilieren und sie mit setuptools / setup.py?

zu installieren

Was ich gerne erreichen möchte ist:

  • Installation dieser Binärdatei in virtuellen Umgebungen
  • Verwalten Sie die Kompilierung / Installation der Binärdatei mit setup.py install , setup.py build etc.
  • macht den Binärteil meines Python-Moduls, so dass es als ein Rad ohne externe Abhängigkeiten verteilt werden kann
Dave Challis 16.10.2015, 10:40
quelle

1 Antwort

3

Am Ende gelöst durch Ändern von setup.py , um zusätzliche Handler für Befehle hinzuzufügen, die die Installation durchgeführt haben.

Ein Beispiel für ein setup.py , das könnte sein:

%Vor%

Wenn nun python setup.py install aufgerufen wird, wird die benutzerdefinierte CustomInstall -Klasse verwendet, die dann Software kompiliert und installiert, bevor die normalen Installationsschritte ausgeführt werden.

Sie können auch ähnliche Schritte für andere Schritte ausführen, an denen Sie interessiert sind (z. B. build / develop / bdist_egg usw.).

Eine Alternative besteht darin, die Funktion compile_and_install_software() zu einer Unterklasse von setuptools.Command zu machen und einen vollwertigen Befehl setgetools für sie zu erstellen.

Dies ist komplizierter, aber Sie können Dinge wie einen Unterbefehl eines anderen Befehls festlegen (um z. B. die doppelte Ausführung zu vermeiden) und benutzerdefinierte Optionen an die Befehlszeile übergeben.

    
Dave Challis 27.05.2016, 10:48
quelle