Für ein Projekt muss ich meine Python Version 3.2 aktualisieren und habe mich dazu entschlossen die derzeit aktuelle Python 3.6.0 zu installieren - was ich hier dokumentiere, wie immer auch für mich selbst...
Vorab: Empfehlenswert Raspbian Jessie: gcc 5
Ist aber mit Vorsicht zu geniesen!
Neuere Python Versionen benötigen auch einen neueren GCC Compiler, zum Beispiel python3.4 benötigt mindestens gcc-4.9 (erst ab Jessie verfügbar), das ist für manche Python Module wichtig..
Es gibt 2 Möglichkeiten:
1) Build from Source.
Dauert allerdings ziemlich lange da ca. 400 Tests durchgeführt werden. (kann man glaub ich aber auch abschalten)
2) Aus einem Repository installieren.
Wer eine ältere Distribution wie zB Wheezy nutzt muss temporär für apt-get eine neuere Source hinzufügen, wie im "gcc 5" thread beschrieben allerdings könnte "jessie" bereits reichen, sofern ihr statt python3.2 lieber python3.4 nutzen wollt. (manche neuere Module funktionieren erst ab python3.4)
Was man auf jeden Fall nutzen sollte sofern man unterschiedliche Python Versionen (zB 3.4 und 3.6) nutzen möchte: https://virtualenv.pypa.io/en/stable/
Zu 1.:
sudo -i
apt-get update
apt-get install build-essential libbz2-dev libsqlite3-dev libreadline-dev zlib1g-dev libncurses5-dev libssl-dev libgdbm-dev libpng-dev libfreetype6-dev libc6-dev tk-dev
apt-get install checkinstall
cd /usr/src/
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
tar xfz Python-3.6.0.tgz
cd Python-3.6.0/
./configure --enable-optimizations
make -j4
checkinstall
# or:
make altinstall
Alles anzeigen
Das "checkinstall" Paket/Programm ist optional und wird dazu genutzt ein *.deb Paket zu erstellen was man dann später immer wieder zum installieren benutzen kann, ohne vorheriges kompilieren. Ich würde diesen Schritt eigentlich empfehlen, allerdings nutzt es "make install" aber offiziell wird "make altinstall" empfohlen...
Zu beachten ist das es nur eine python3.6/ Installation gibt, unabhängig der x.x.X Version.
Wer also zum Beispiel 3.6.0 und zusätzlich auch 3.6.1 installiert haben will muss ein 'prefix' beim configure mit angeben um es in ein anderes Verzeichnis installieren zu lassen (zB: ./configure --enable-optimizations --prefix=/opt)
Zu 2.:
sudo -i
echo 'deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi' > /etc/apt/sources.list.d/jessie.list
apt-get update
apt-get install python3
#bzw:
apt-get install python3.4
Dann noch 'pip' für die jeweilige installieren:
wget https://bootstrap.pypa.io/get-pip.py
python3.6 get-pip.py
pip3.6 install --upgrade setuptools
(oder "python3.4 get-pip.py" je nach dem welche Version ihr installiert habt...)
Seit pip v0.8 wird "pip{version}" bereitgestellt, worüber man vereinfacht Python-Module für die jeweilige Python-Version gezielt installieren kann, also zum Beispiel:
Alternativ:
Im Script nicht vergessen den Shebang ebenfalls eindeutig zu setzen.
Quellen:
http://unix.stackexchange.com/questions/3326…tall-python-3-6
http://askubuntu.com/a/865644
http://stackoverflow.com/a/25474222
http://stackoverflow.com/questions/2718…rotector-strong