Wie installiere ich eine alternative Version von Python neben der mitgelieferten Distribution?


2

Gibt es eine offizielle Möglichkeit, eine bestimmte Version von Python zumindest 2.6manuell in das von mir ausgewählte Verzeichnis zu installieren ? Ich habe nicht unbedingt root-Rechte auf dem Host, auf dem ich installiere.

Nachdem ich die Python-Installation abgeschlossen habe, muss ich sie installieren pip. Für mich ist es wichtig, dass das vom System bereitgestellte Python (2.4.3 im Lieferumfang von CentOS 5 enthalten) für alle meine Zwecke vollständig ignoriert wird. Im Wesentlichen muss sich meine gesamte Python- und Pip-Installationsprozedur so verhalten, als ob keine frühere Version von Python auf dem System installiert wäre.

Kompiliere ich es aus dem Quellcode oder kann ich irgendeine Form von Paket haben, das ich einfach irgendwo extrahieren und Python ausführen kann? Ich bevorzuge letzteres, da ich versuche, die Installation des Entwicklungssoftware-Stacks auf dem Host zu vermeiden (es ist ein Server, keine Entwickler-Workstation).



Benötigt virtualenv kein Python?
amn

Antworten:


2

Laden Sie eines der Quell-Tarballs auf dieser Seite herunter .

Dann entpacken Sie es cdin das Verzeichnis und folgen den Anweisungen in Abschnitt 2.2 des Python-Online-Handbuchs .

Wenn Sie möchten, dass es beispielsweise /usr/binanstelle der Standardinstallation ( /usr/local/binin Ubuntu / Debian) installiert wird, geben Sie stattdessen ein ./configure, ./configure --prefix=/usrwenn Sie dazu aufgefordert werden, es im Handbuch zu verwenden.

$HOME/binVerwenden Sie in Ihrem Verzeichnis --prefix=$HOME.

Wenn es nicht existiert, füge $HOME/bines $PATHwie folgt hinzu :

$ export PATH=$HOME/bin:$PATH

Dies kann bereits in Ihrem .bashrcUbuntu und anderen sein. Wenn dies der $HOME/binFall ist, wird es beim nächsten Anmelden $PATHautomatisch zu Ihrem hinzugefügt .


1

Dafür müssten Sie meines Erachtens aus dem Quellcode kompilieren und die --prefixOption verwenden.

  1. Laden Sie Python herunter
  2. Untar tar -xvf python*.tar.bz2
  3. CD in das Verzeichnis: cd python
  4. Kompilieren / installieren: ./configure --prefix=/home/$(whoami)/desired_folder && make && make install
  5. Fügen Sie es zu Ihrem hinzu path, um es aufrufen zu können.

1

Verwenden ALTINSTALLSie diese Option für eine alternative Installation, um Ihr Standard-Python3 nicht zu ersetzen.

tar zxvf Python-2.6.5.tgz
cd Python-2.6.5
./configure
./make
./make ALTINSTALL 

1
Willkommen bei Super User! Dies scheint eine gute Antwort zu sein, aber für alle, die mit Linux nicht vertraut sind, sind diese Befehle möglicherweise etwas undurchsichtig. Möglicherweise möchten Sie zusätzlich zu den Befehlen selbst eine kurze Erläuterung der von Ihnen ausgeführten Schritte und der Gründe hinzufügen.
Anaksunaman

0

Das klingt nach einem Job für virtualenv: https://pypi.python.org/pypi/virtualenv

Sie können es mit pip: installieren pip install virtualenv, allerdings benötigen Sie dafür Berechtigungen auf dem Computer. Wenn Sie keine Computerberechtigungen haben, können Sie diese lokal installieren (aus der Dokumentation kopiert ):

$ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
$ tar xvfz virtualenv-X.X.tar.gz
$ cd virtualenv-X.X
$ python virtualenv.py myVE

Bearbeiten: Virtualenv installiert selbst keine neuen Versionen von Python. Sie müssen es anderswo installieren, wie in anderen Antworten erwähnt, und dann den Pfad zu Ihrem benutzerdefinierten Build angeben, mit -p /path/to/bin/pythondem Sie eine Umgebung erstellen. Das macht es einfach, die Umgebung vom Rest des Systems getrennt zu halten.


Das ist die Sache - ich habe kein Python auf dem Host, und ich bin nicht in der Lage, den Paket-Manager zu verwenden, um es zu installieren. Tatsächlich habe ich nicht einmal Entwicklungswerkzeuge, um es aus dem Quellcode zu erstellen, aber diese Einschränkung ist lockerer - ich kann diese [dev] -Tools installieren. Wie auch immer, ich muss zuerst Python erstellen und installieren, dann Pip, dann Virtualenv. Vielen Dank für die Anweisungen zur Verwendung von virtualenv.
amn

Ich wusste nichts über virtualenv. es sieht ordentlich aus. Aber wie unterscheidet sich das von einem chroot?
Wyatt8740

Eine Chroot verhindert, dass die Anwendung auf etwas außerhalb ihres Gefängnisses zugreift. virtualenv macht das nicht; Es isoliert nur Ihren Python-Code von den Python-Binärdateien und -Modulen des Systems. Auf diese Weise können Sie sich in / var / log anmelden, externe Binärdateien aus / usr / bin aufrufen und alles tun, was eine nicht-chroot-fähige App kann.
Alex Forbes

Ich glaube, er hat nach dem Hauptunterschied gefragt, um Python zu isolieren. Zu diesem Zweck ist es irrelevant, zu verhindern, dass eine Anwendung auf etwas außerhalb ihres "Gefängnisses" zugreift. Sogar ein Chroot-Programm sieht /var/log, /usr/binetc, es ist nur so, dass die tatsächlichen Daten, die Adressierung /var/logund /usr/binin diesem Fall verfügbar sind, unterschiedlich sein können - es muss nicht gleich sein /var/logund /usr/bin. Du änderst die Wurzel, aber du kannst sie nicht loswerden. Jailing ist ein loser Begriff, der etwas beschreiben kann, was getan werden kann chroot, aber die beiden haben einen etwas unterschiedlichen Anwendungsbereich.
amn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.