Hallo zusammen,
ich möchte Python kompilieren (funktioniert) und in meinem Home-Verzeichnis installieren (klappt nur bedingt).
Das configure-Script bietet ja eine Möglichkeiten, das Installationsverzeichnis zu ändern. Mit --prefix=$HOME/Python funktioniert die Installation.
Allerdings würde ich auch gerne die Unterverzeichnisse mit benutzerdefinierten Namen anlegen.
bin -> Executables
include -> Headers
lib -> Libraries
man -> Documentation
Das configure-Script hat dafür mehrere Optionen, die teils ignoriert werden. Beispielsweise gibt es nach Ausführen von make install "Executables" aber auch "bin", welches pip enthält.
Teilweise kann man das Makefile ändern, aber damit lassen sich nicht alle Verzeichnisse "umbiegen".
Hat jemand eine Idee?
PS: Mir ist bewusst, dass das eine Fleißarbeit ist.
Benuterdefinierte Installations-Verzeichnisse
Ich halte das ehrlich gesagt für keine so gute Idee. Viele der Parameter (die, die Betriebssystemspfade betreffen) kannst du zwar über die Kommandozeilenparameter (die bei mir übrigens alle das tun, was sie sollen) ändern, einige (python-spezifische) Pfade aber soweit ich weiß eben nur über das Makefile (z.B. SCRIPTDIR, CONFIGINCLUDEDIR, …). Wenn man anfängt, daran Änderung vorzunehmen, ist meiner Einschätzung nach nicht mehr sichergestellt, dass man eine konsistente Python-Installation hat. Dass pip im Ordner bin landet, lässt sich vielleicht dadurch umgehen, dass man es zunächst nicht mit installiert (--without-ensurepip) und dann später mal versucht, es nachzuinstallieren.
Ungefähr so:
Anschließend muss man wohl noch etwas an den Umgebungsvariablen drehen, damit alle Module gefunden werden.
Ich kann jedenfalls nur raten, dir gut zu überlegen, ob sich die Aufwand lohnt. Die Ordner heißen halt, wie sie heißen. Wenn es denn unbedingt sein muss, kann man ja vielleicht etwas mit Symlinks erreichen.
Ungefähr so:
Code: Alles auswählen
$ PREFIX=$HOME/python38; ./configure --prefix="$PREFIX" --exec-prefix="$PREFIX" --bindir="${PREFIX}/Executables" --libdir="${PREFIX}/Libraries" --mandir="${PREFIX}/Documentation" --includedir="${PREFIX}/Headers" --oldincludedir="${PREFIX}/Headers" --without-ensurepip
Ich kann jedenfalls nur raten, dir gut zu überlegen, ob sich die Aufwand lohnt. Die Ordner heißen halt, wie sie heißen. Wenn es denn unbedingt sein muss, kann man ja vielleicht etwas mit Symlinks erreichen.