Ich habe versucht, Python 2.7 aus der Quelle zu kompilieren.
Hier sind meine Befehle:
Und die Ausgabe von which python
ist /my/local/dir/bin/python
, was korrekt ist.
Aber wenn ich python --version
ausgeführt habe, sehe ich Python 2.7.3
anstelle von Python 2.7.10
.
Die Systemversion von Python ist 2.7.3. Könnte es sein, dass die Systemversion von Python sich irgendwie mit der lokalen, kompilierten Version verbindet? Oder mache ich etwas falsch?
Bearbeiten:
Die Ausgabe von ./my/local/dir/bin/python --version
ist auch Python 2.7.3
Bearbeiten 2:
Scheint so, als ob ich das --enable-shared
-Flag loswerde, es wird die korrekte Version von Python erzeugen, aber ich brauche dieses Flag, damit meine andere Software funktioniert.
Also dieser Beitrag kann mein Problem beheben. Um die Quelle zu zitieren:
Wenn Sie versuchen, eine Python-ausführbare Datei --enable-shared aus ihrem Build-Verzeichnis auszuführen, müssen Sie dem dynamischen Ladeprogramm mitteilen, wo die gemeinsam genutzte Bibliothek zu finden ist, d. h. das Build-Verzeichnis selbst. Eine Möglichkeit dazu besteht in der Verwendung der Umgebungsvariablen LD_LIBRARY_PATH. Andernfalls durchsucht der dynamische Lader die Standardpfade wie / usr / local / lib / und / usr / lib / nach einer gemeinsam genutzten Bibliothek mit dem richtigen Namen (wie libpython2.7.so.1.0). Wenn bereits ein älteres Python mit diesem Namen installiert ist und sich der ABI nicht zu sehr geändert hat, können Sie Glück haben und es wird geladen und ausgeführt.
Denken Sie daran, dass Shells den Speicherort von Binärdateien zwischenspeichern, anstatt jedes Mal in PATH
zu suchen.
Wenn Sie also python
zuvor in derselben Shell ausgeführt haben, wird weiterhin die alte Version verwendet.
Verwenden Sie hash -r
, um dies zu beheben, ohne eine neue Shell zu starten.
Tags und Links python linux python-2.7 ubuntu