Ich habe zwei Versionen von Python auf meiner Linuxbox:

$python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 


$ /usr/local/bin/python2.7
Python 2.7.3 (default, Oct  8 2013, 15:53:09) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

$ which python
/usr/bin/python
$ ls -al /usr/bin/python
-rwxr-xr-x. 2 root root 4864 Jul 10 22:49 /usr/bin/python

Wie kann ich 2.7 zur Standardversion machen, wenn ich python eingebe, bin ich dann in 2.7?

127
Anthony 8 Okt. 2013 im 23:04

5 Antworten

Beste Antwort

Sie möchten Ihr Standard-Python wahrscheinlich nicht wirklich ändern.

Ihre Distribution hat ein Standardsystem Python in /usr/bin installiert und verfügt möglicherweise über Skripte, die davon abhängen, dass diese vorhanden sind und von #! /usr/bin/env python ausgewählt werden. Sie können normalerweise mit der Ausführung von Python 2.6-Skripten in 2.7 davonkommen, aber möchten Sie dies riskieren?

Darüber hinaus kann das Monkeying mit /usr/bin die Fähigkeit Ihres Paketmanagers zum Verwalten von Paketen beeinträchtigen. Das Ändern der Reihenfolge der Verzeichnisse in Ihrem PATH wirkt sich neben Python auf viele andere Dinge aus. (Tatsächlich ist es üblicher, /usr/local/bin vor /usr/bin zu haben, und es kann sein, was Sie tatsächlich wollen - aber wenn Sie es umgekehrt haben, gibt es vermutlich einen guten Grund dafür.)

Sie müssen jedoch nicht Ihr Standard-Python ändern, damit das System 2.7 ausführt, wenn Sie python eingeben.


Zunächst können Sie einen Shell-Alias einrichten:

alias python=/usr/local/bin/python2.7

Geben Sie dies an einer Eingabeaufforderung ein oder fügen Sie es in Ihr ~/.bashrc ein, wenn die Änderung dauerhaft sein soll. Wenn Sie python eingeben, wird die von Ihnen gewählte 2.7 ausgeführt, aber wann Einige Programme auf Ihrem System versuchen, ein Skript mit /usr/bin/env python auszuführen. Es führt den Standard 2.6 aus.


Alternativ können Sie einfach eine virtuelle Umgebung aus Ihrer 2.7 erstellen (oder separate Venvs für verschiedene Projekte) und mach deine arbeit im venv.

170
abarnert 8 Okt. 2013 im 19:47

Fügen Sie /usr/local/bin zu Ihrer Umgebungsvariablen PATH hinzu, die früher in der Liste steht als /usr/bin.

Im Allgemeinen erfolgt dies in der RC-Datei Ihrer Shell, z. Für Bash würden Sie dies in .bashrc einfügen:

export PATH="/usr/local/bin:$PATH"

Dies führt dazu, dass Ihre Shell zuerst nach python in /usr/local/bin sucht, bevor sie mit der in /usr/bin übereinstimmt.

(Dies bedeutet natürlich, dass Sie auch /usr/local/bin/python auf python2.7 zeigen müssen - falls dies noch nicht geschehen ist, müssen Sie es mit einem Symlink verknüpfen.)

18
Amber 8 Okt. 2013 im 19:08

Alle Betriebssysteme werden mit einer Standardversion von Python geliefert und befinden sich in / usr / bin. Alle mit dem Betriebssystem gelieferten Skripte (z. B. yum) verweisen auf diese Python-Version in / usr / bin. Wenn Sie eine neue Version von Python installieren möchten, möchten Sie die vorhandenen Skripte nicht beschädigen, die möglicherweise nicht mit der neuen Version von Python funktionieren.

Der richtige Weg, dies zu tun, besteht darin, den Python als alternative Version zu installieren.

e.g.
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 
tar xf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/usr/local/
make && make altinstall

Auf diese Weise funktionieren die vorhandenen Skripte wie yum immer noch mit / usr / bin / python. und Ihre Standard-Python-Version ist die in / usr / local / bin installierte. d.h. wenn Sie Python eingeben, erhalten Sie 2.7.3

Das passiert weil. Die Variable $ PATH hat / usr / local / bin vor usr / bin.

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

Wenn python2.7 immer noch nicht als Standard-Python-Version wirksam wird, müssten Sie dies tun

export PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
2
Prakash Kamath 8 Dez. 2018 im 03:14

Geben Sie den Befehl ein

which python

//output:
/usr/bin/python

cd /usr/bin
ls -l

Hier können Sie so etwas sehen

lrwxrwxrwx 1 root   root            9 Mar  7 17:04  python -> python2.7

Ihr Standard-Python2.7 ist mit dem Text 'Python' verknüpft.

Entfernen Sie also die Softlink-Python

sudo rm -r python

Wiederholen Sie dann den obigen Befehl

ls -l

Sie können sehen, dass der Softlink entfernt wurde

-rwxr-xr-x 1 root   root      3670448 Nov 12 20:01  python2.7

Erstellen Sie dann einen neuen Softlink für python3.6

Ln -s /usr/bin/python3.6 Python

Versuchen Sie dann den Befehl python im Terminal

//output:
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux

Geben Sie help, copyright, credits oder license ein, um weitere Informationen zu erhalten.

2
vahdet 7 März 2019 im 12:52

Überprüfen Sie die aktuelle Version von Python mit:

$ python --version

Überprüfen Sie dann, ob Python ein symbolischer Link zu welcher Datei ist.

  $ ll /usr/bin/python

Ausgabe Bsp.:

 lrwxrwxrwx 1 root root 9 Jun 16  2014 /usr/bin/python -> python2.7*

Überprüfen Sie andere verfügbare Versionen von Python:

$ ls /usr/bin/python*

Ausgabe Bsp.:

/usr/bin/python     /usr/bin/python2.7-config  /usr/bin/python3.4         /usr/bin/python3.4m-config  /usr/bin/python3.6m         /usr/bin/python3m
/usr/bin/python2    /usr/bin/python2-config    /usr/bin/python3.4-config  /usr/bin/python3.6          /usr/bin/python3.6m-config  /usr/bin/python3m-config
/usr/bin/python2.7  /usr/bin/python3           /usr/bin/python3.4m        /usr/bin/python3.6-config   /usr/bin/python3-config     /usr/bin/python-config

Wenn Sie die aktuelle Version von Python in die Version 3.6 ändern möchten, bearbeiten Sie die Datei ~ / .bashrc:

vim ~/.bashrc

Fügen Sie die folgende Zeile am Ende der Datei hinzu und speichern Sie:

alias python=/usr/local/bin/python3.6

So installieren Sie pip für Python 3.6

$ sudo apt-get install python3.6 python3.6-dev
$ sudo curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python3.6
$ sudo easy_install pip

Überprüfen Sie bei Erfolg die aktuelle Version von pip:

$ pip3 -V

Ausgabe Bsp.:

pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)
3
ShivBuyya 4 Apr. 2019 im 10:48