it-swarm.com.de

Zwei Versionen von Python unter Linux. wie man 2.7 zum Standard macht

Ich habe zwei Versionen von Python in 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 als Standardversion festlegen, wenn ich python eingebe, wird es in 2.7 angezeigt?

110
Anthony

Wahrscheinlich möchten Sie Ihren Standard-Python wahrscheinlich nicht ändern.

Ihre Distribution hat ein Standardsystem Python in /usr/bin installiert. Möglicherweise sind Skripten vorhanden, die davon abhängig sind, dass diese vorhanden sind, und von #! /usr/bin/env python ausgewählt werden. Sie können normalerweise mit dem Ausführen von Python 2.6-Skripten in 2.7 auskommen, aber möchten Sie es riskieren?

Darüber hinaus kann das Affen mit /usr/bin die Fähigkeit des Paket-Managers zum Verwalten von Paketen beeinträchtigen. Das Ändern der Reihenfolge der Verzeichnisse in Ihrer 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 ist vielleicht das, was Sie eigentlich wollen - aber wenn Sie es andersherum haben, gibt es vermutlich einen guten Grund dafür.

Sie brauchen jedoch nicht need, um Ihren Standard-Python zu ä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 bei einer Eingabeaufforderung ein oder geben Sie es in Ihren ~/.bashrc ein, wenn die Änderung dauerhaft sein soll. Wenn Sie type python ausgeführt wird, wird der von Ihnen gewählte 2.7 ausgeführt Skript mit /usr/bin/env python läuft den Standard 2.6.


Alternativ können Sie einfach eine virtuelle Umgebung aus 2.7 (oder separate Projekte für verschiedene Projekte) erstellen und Ihre Arbeit innerhalb des Bereichs erledigen.

161
abarnert

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

Im Allgemeinen geschieht dies in der RC-Datei Ihrer Shell, z. für Bash würden Sie dies in .bashrc eingeben:

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

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

(Dies bedeutet natürlich, dass Sie auch /usr/local/bin/python auf python2.7 verweisen müssen. Falls dies nicht bereits der Fall ist, müssen Sie einen Symlink erstellen.)

17
Amber

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-Python 2.7 ist mit dem Text "Python" verknüpft.

Entfernen Sie also den 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

Dann erstelle 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.

1
Sreenath

Alle Betriebssysteme werden mit einer Standardversion von Python geliefert und befinden sich in/usr/bin. Alle mit dem Betriebssystem gelieferten Skripts (z. B. yum) weisen auf diese Version von Python in /usr/bin. Wenn Sie eine neue Version von Python installieren möchten, möchten Sie nicht die vorhandenen Skripts brechen, die möglicherweise nicht funktionieren neue Version von Python. 

Die richtige Vorgehensweise ist, 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

Jetzt funktionieren die vorhandenen Skripte wie yum weiterhin mit /usr/bin/python.und Ihre Standard-Python-Version wäre die in /usr/local/bin.i.e installierte. Wenn Sie Python eingeben, erhalten Sie 2.7.3

Das passiert weil. Die Variable $ PATH enthält/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üssen 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"
0
Prakash Kamath

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

$ python --version

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

  $ ll /usr/bin/python

Ausgang Ex:

 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*

Ausgang Ex:

/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 auf 3.6 ändern möchten, bearbeiten Sie die Datei ~/.bashrc:

vim ~/.bashrc

füge die folgende Zeile am Ende der Datei hinzu und speichere:

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

Ausgang Ex:

pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)
0
ShivBuyya