wie man Pip erzeugt, respektiere die Umgebungsvariable "CC"

8

Ich arbeite in einer sehr komplizierten Umgebung, in der verschiedene Maschinen Zugriff auf verschiedene verteilte Dateisysteme haben.

  • Maschine A hat Zugriff auf Dateisystem X und wird verwendet, um Software auf Dateisystem Y .
  • zu installieren
  • Maschine B hat Zugriff auf Dateisystem Y , aber nicht X .

Ich arbeite an der Maschine B , und ich benutze Python sehr oft. Manchmal brauche ich Pakete, die nicht vorinstalliert sind. Daher verwende ich pip install PKGXYZ --user , um sie lokal zu installieren. Das funktioniert im Allgemeinen gut, aber es gibt einen Haken.

Die Python-Pakete distutils und ihre monkey-patched-Ableitung setuptools , die von pip verwendet werden, verwenden die distutils.sysconfig -Funktionalität, um Compiler-Versionen, Pfade und dergleichen zu erhalten. Dazu verwenden sie das interne Makefile , das zur Installation von Python verwendet wurde. Obwohl dies im Allgemeinen eine gute Strategie ist, schlägt es mit meiner konkreten Einrichtung fehl, weil die Pfade in Pythons intern Makefile auf Dateisystem X zeigen, auf die ich auf meinem Rechner B keinen Zugriff habe. Daher benutze ich die Option --no-clean von pip und hacke die setup.py der Pakete, die ich installieren möchte, mit Snippets wie folgt:

%Vor%

, so dass ich die Umgebungsvariable CC verwenden kann, um die Standardeinstellungen des Compiler-Pfades von Pythons Makefile mit etwas zu überschreiben, das auf meinem Rechner funktioniert.

Aber das ist ein hässlicher Hack. Es muss sicherlich eine bessere Möglichkeit geben, dies zu tun und pip einen anderen Compiler über eine Umgebungsvariable, eine Konfigurationsdatei oder eine Befehlszeilenoption verwenden zu lassen. Oder ist es?

    
carsten 12.03.2017, 12:25
quelle

1 Antwort

1

Es klingt, als hätten Sie Compiler-Tools auf System B. Eine Option wäre also, Python auf Ihrem System mit lokalen Tools neu zu erstellen und stattdessen zu verwenden.

Wenn Sie dies nur für Ihren Benutzer auf Ihrem System tun, können Sie es sogar im Home-Verzeichnis Ihres Benutzers installieren, um es komplett aus dem Weg zu räumen, und dann Ihre Umgebung für die Verwendung einrichten. Oder benutze virtualenv.

Sie können eine neue Python-Installation einfach erstellen und erstellen. Zum Beispiel für Python 3.5.1 unter Linux:

%Vor%     
daphtdazz 16.03.2017 13:56
quelle