Ich verwende pip und versuche, ein Python-Modul namens pyodbc zu installieren, das einige Abhängigkeiten von Nicht-Python-Bibliotheken wie unixodbc-dev, unixodbc-bin, unixodbc aufweist. Ich kann diese Abhängigkeiten derzeit nicht systemweit installieren, da ich nur spiele. Daher habe ich sie an einem nicht standardmäßigen Speicherort installiert. Wie kann ich pip mitteilen, wo nach diesen Abhängigkeiten gesucht werden soll? Genauer gesagt, wie übergebe ich Informationen über pip von Include-Verzeichnissen (gcc -I) und Bibliotheksverzeichnissen (gcc -L -l), die beim Erstellen der pyodbc-Erweiterung verwendet werden sollen?
73
--user
Option installiert ?Antworten:
pip hat eine
--global-option
FlaggeSie können es verwenden, um zusätzliche Flags an zu übergeben
build_ext
.So fügen Sie beispielsweise ein Flag --library-dirs (-L) hinzu:
pip install --global-option=build_ext --global-option="-L/path/to/local" pyodbc
gcc unterstützt auch Umgebungsvariablen: http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html
Ich konnte keine build_ext-Dokumentation finden. Hier ist die Befehlszeilenhilfe
quelle
--install-option
auch funktioniert, anstatt--global-option
Pfade zu Bibliotheken anzugeben. Ich bin mir nicht sicher, wann einer verwendet werden soll und nicht der andere.--install-option
Gilt möglicherweise nur für die Installation und--global-option
hat einen größeren Anwendungsbereich. Siehe auch pip.pypa.io/en/stable/reference/pip_install/…Aufbauend auf Thorfins Antwort und unter der Annahme, dass sich Ihre gewünschten Include- und Bibliotheksstandorte in / usr / local befinden, können Sie beide wie folgt übergeben:
sudo pip install --global-option=build_ext --global-option="-I/usr/local/include/" --global-option="-L/usr/local/lib" <you package name>
quelle
Nur zu Ihrer Information ... Wenn Sie Probleme bei der Installation eines Pakets mit pip haben, können Sie das verwenden
--no-clean
Option, um zu sehen, was genau los ist (das heißt, warum der Build nicht funktioniert hat). Wenn numpy beispielsweise nicht ordnungsgemäß installiert wird, können Sie es versuchenpip install --no-clean numpy
Sehen Sie sich dann den temporären Ordner an, um zu sehen, wie weit der Build gekommen ist. Auf einem Windows-Computer sollte sich Folgendes befinden:
C:\Users\Bob\AppData\Local\Temp\pip_build_Bob\numpy
Um ganz klar zu sein, versucht die Option --no-clean, das Paket zu installieren, bereinigt jedoch nicht nach sich selbst, sodass Sie sehen können, was pip versucht hat.
Andernfalls würde ich das
-d
Flag verwenden , wenn Sie nur den Quellcode herunterladen möchten . Verwenden Sie beispielsweise Folgendes, um die Numpy-Quellcodedatei.tar
in das aktuelle Verzeichnis herunterzuladen :quelle
Eine andere Möglichkeit, den Speicherort von Include-Dateien und Bibliotheken anzugeben, besteht darin, relevante Umgebungsvariablen festzulegen, bevor pip ausgeführt wird, z
quelle
Mir half auch Thorfins Antwort; Ich habe GTK3 + unter Windows erstellt und pygobject installiert. Ich hatte Schwierigkeiten, mehrere Ordner in die Pip-Installation aufzunehmen.
Ich habe versucht, eine Pip-Konfigurationsdatei gemäß der Pip-Dokumentation zu erstellen. aber scheiterte. Derjenige, der arbeitet, ist mit der Kommandozeile:
--global-option = build_ext gefolgt von --global-option = "- IlistOfDirectories" und / oder --global-option = "- LlistofDirectories"
Das Trennzeichen, das mit mehreren Ordnern in Windows funktioniert, ist ';' Semikolon , NICHT Doppelpunkt ':' In anderen Betriebssystemen kann dies anders sein.
Beispiel für eine Arbeitsbefehlszeile:
pip install --global-option=build_ext --global-option="-Ic:/gtk-build/gtk/x64/release/include;d:/gtk-build/gtk/x64/release/include/gobject-introspection-1.0" --global-option="-Lc:\gtk-build\gtk\x64\release\lib" pygobject==3.27.1
Sie können '\' oder '/' als Pfad verwenden, aber stellen Sie sicher, dass Sie keinen Backslash neben "
Dies wird fehlschlagen, da neben dem doppelten Anführungszeichen ein Backslash steht
pip install --global-option=build_ext --global-option="-Ic:\willFail\" --global-option="-Lc:\willFail\" pygobject==3.27.1
quelle
Haben Sie schon einmal virtualenv verwendet ? Mit diesem Python-Paket können Sie mehrere isolierte Umgebungen auf einem Computer erstellen und verwalten. Jedes kann verschiedene Module unabhängig voneinander verwenden, ohne Abhängigkeiten in Ihrer Systembibliothek oder einer separaten virtuellen Umgebung zu vermasseln.
Wenn Sie keine Root-Rechte haben, können Sie das virtualenv-Paket von der Quelle herunterladen und verwenden :
Ich habe dieses Wochenende die obigen Schritte unter Ubuntu Server 12.0.4 ausgeführt und es hat perfekt funktioniert. Jede neue virtuelle Umgebung, die Sie erstellen, wird standardmäßig mit PIP geliefert, sodass die Installation von Paketen in Ihrer neuen Umgebung einfach ist.
quelle
Nur für den Fall, dass es jemandem hilft, konnte ich immer noch keinen Weg finden, dies über pip zu tun. Am Ende lud ich einfach das Paket herunter und tat es über die 'setup.py'. Auch auf eine scheinbar einfacher zu installierende API namens 'pymssql' umgestellt.
quelle
python setup.py build_ext --rpath=/usr/local/lib
?